본문 바로가기
[Effective Objective-C] #34 오토릴리스 풀을 사용하여 최고 메모리 사용량을 낮춰라 [Effective Objective-C] #34 오토릴리스 풀을 사용하여 최고 메모리 사용량을 낮춰라 출처 : Effective Objective-C -오브젝티브-C 의 Reference cout 아키텍처의 기능 중 하나는 오토릴리스 풀이다.객체를 릴리스한다는 것은 release 를 호출하여 객체의 리테인 수를 즉시 줄이거나 autorelease 를 호출해 객체를 오토릴리스 풀에 추가하는 것을 말한다.오토릴리스 풀은 미래의 특정 시점에 릴리스해야 할 객체의 집합으로 사용된다.풀이 마르면, 그 때 풀의 모든 객체에 release 메시지를 보낸다.@autoreleasepool { // ...} -객체에 autorelease 메시지를 보냈을 때 적절한 오토릴리스 풀이 없다면 콘솔(console)에서 다음과 .. 2017. 9. 28.
[Effective Objective-C] #33 weak 참조를 사용하여 리테인 순환을 피하라 [Effective Objective-C] #33 weak 참조를 사용하여 리테인 순환을 피하라 출처 : Effective Objective-C -객체들끼리 서로를 어떠한 방법으로 참조하여 순환을 이루고 있는 객체 그래프(object graph)에서 순환이 발생하는 것을 흔히 볼 수 있다.순환이 발생하면 특정 지점에서 메모리 누수가 발생할 것이다.순환을 이루는 모든 객체가 결국엔 순환 밖에 있는 객체들에 의해 참조되지 않기 때문이다.그렇게 되면 순환 내의 객체에 접근할 수 있는 방법이 더는 없게 된다.그뿐 아니라 순환 내의 객체들은 서로를 할당 해제하지 않을 것이다.서로가 서로를 살아 있게 유지하기 때문이다. -리테인 순환 중 가장 간단한 것은 객체 두 개가 서로를 참조하는 것이다. -리테인 순환 내의 .. 2017. 9. 27.
[Effective Objective-C] #31 참조를 릴리스하고 관찰 상태(observation state)를 정리하는 일은 dealloc 메서드에서만 하라 [Effective Objective-C] #31 참조를 릴리스하고 관찰 상태(observation state)를 정리하는 일은 dealloc 메서드에서만 하라 출처 : Effective Objective-C -생애 주기가 끝난 객체는 할당 해제되고 dealloc 메서드가 호출될 것이다.이 메서드는 객체의 생애 주기 동안 리테인 수가 0으로 떨어질 때 딱 한 번 호출된다.호출되는 시점은 보장되지 않는다. 그렇지만 리테인과 릴리스가 있는 코드를 살펴보고 언제 호출될지 예상할 수 있다고 생각할 수도 있다.그러나 실제로는 여러분이 모르는 사이에 어떠한 라이브러리라도 객체를 조작할 수 있다.이는 예정되지 않는 시점에 할당 해제가 일어나게 하는 원인이 될 수 있다. -절대로 dealloc 을 직접 호출하면 안 된.. 2017. 9. 24.
[Effective Objective-C] #30 ARC 를 사용하여 reference count 를 쉽게 만들라 [Effective Objective-C] #30 ARC 를 사용하여 reference count 를 쉽게 만들라 출처 : Effective Objective-C -Clang 컴파일러 프로젝트(맥 OS X 와 iOS 개발에 사용되는 컴파일러 프로젝트)는 문제가 있는 참조 세기의 위치를 가리킬 수 있게 정적 분석기를 도입했다.이 정적 분석기를 통해 메모리 누수가 있다고 알려줄 수 있다.어디에 메모리 관리 문제가 있는지도 알려줄 수 있다.이것이 ARC 가 만들어진 배경이다. -ARC 는 이름이 말하는 그대로의 일을 한다.즉 reference counting 을 자동으로 한다.그래서 이전 코드 조각에서는 release 등을 써 주던 것을 이제는 하지 않아도 ARC 가 알아서 추가해준다. -ARC 를 사용할 때.. 2017. 9. 23.
[OSX] Bash Script 에서 Script 실행파일이 있는 Path 구하기 [OSX] Bash Script 에서 Script 실행파일이 있는 Path 구하기 DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) 요 녀석이 현재 directory 를 갖는다 ${BASH_SOURCE[0]}, bash script, bash_source, dirname, OSX, script 실행파일 path, [OSX] Bash Script 에서 Script 실행파일이 있는 Path 구하기 2017. 8. 23.
[iOS Study] 병렬 프로그래밍 가이드 ( 병렬 앱 디자인 ) [iOS Study] 병렬 프로그래밍 가이드 ( 병렬 앱 디자인 ) https://developer.apple.com/library/ios/documentation/General/Conceptual/ConcurrencyProgrammingGuide/ConcurrencyandApplicationDesign/ConcurrencyandApplicationDesign.html#//apple_ref/doc/uid/TP40008091-CH100-SW1 -전통적 방법으로의 복수개의 코어를 사용하는 방법은 여러개의 thread 를 만들어 사용하는 것이다.그러나 thread 를 사용한 코드는 scale 측면에서 좋지 않다.core 가 처리하기 좋은 thread 의 갯수를 아는 것도 쉽지 않고, thread 들을 효율적으.. 2017. 7. 1.
[iOS] NS_AVAILABLE_IOS  와 NS_DEPRECATED_IOS 의 의미는? [iOS] NS_AVAILABLE_IOS 와 NS_DEPRECATED_IOS 의 의미는? http://iosdevelopertips.com/best-practices/eveything-you-need-to-know-about-ios-and-os-x-deprecated-apis.html -NS_AVAILABLE_IOS(5_0) 위의 접미어는 이 함수는 iOS 5.0 에 새로 들어와서 이 버전 이후에서만 유효하다는 것을 이야기한다.만약 이 함수가 iOS 5.0 이하 버전에서 불린다면 crash 가 발생한다. -NS_DEPRECATED_IOS(2_0, 6_0) 위의 접미어는 2개의 버전을 표시하고 있다.첫번째 버전은 introduced version 이고, 두번째 버전은 deprecated version 이다.. 2017. 6. 17.
OSX 에서 USB Vendor ID 보기 OSX 에서 USB Vendor ID 보기 lsusb 명령어가 OSX 에는 없기 때문에 (linux 에는 있다)USB Vendor ID 를 알기 위해서는.. 1. 좌상단의 애플 아이콘 클릭2. 이 Mac에 관하여 클릭3. 시스템 리포트 클릭4. [하드웨어] - [USB] 에서 연결된 단말을 확인 About, linux, lsusb, MAC, OSX, OSX 에서 USB Vendor ID 보기, USB, USB Vendor ID, 시스템 리포트, 하드웨어 2017. 6. 12.
[OSX] Unknown android device 붙이는 방법 [OSX] Unknown android device 붙이는 방법 OSX 에서 unknown android device 를 붙이는 방법. 해당 device 의 usb vendor id 를 조회해본다.해당 vendor id 를 adb_usb.ini 에 등록해준다. 예를 들어 내가 붙이고 싶은 usb vendor id 가 foxconn 이라면..( general vendor id 는 여기서 확인 http://developer.android.com/tools/device.html#VendorIds ) $ echo 0x0489 >> ~/.android/adb_usb.ini adb_usb.ini, Device, echo, foxconn, general vendor id, MAC, OSX, UNKNOWN, unkno.. 2017. 6. 10.
반응형