memory management

ARC

Unmanaged 에 대해 - Swift

그 옛날(?) ARC가 없던 시절에 Objective-C 및 코어 파운데이션에서 객체에 대한 참조수 관리는 완전한 수동 방식에 의존하고 있다. 어떤 객체에 대한 retain(참조수를 늘리는 것) 동작은 반드시 그에 수반하는 release(참조수를 내리는 것) 동작을 필요로 했다. 그리고 이 짝이 제대로 맞지 않으면 객체는 필요한 시점에 사라지고 없거나, 반대로 메모리 누수가

By sooop

[unowned self]

unowned self

Swift의 클래스가 다른 인스턴스를 프로퍼티로 갖게 되는 경우, 만약 두 인스턴스가 서로를 프로퍼티로 참조하게 되면 상호간에 강한 참조 순환이 발생하게 된다. 이를 해결하기 위해서는 변수 선언시에 weak이나 unowned를 명시하여 약한 참조가 발생하도록 한다. weak weak은 변수가 가리키는 대상이 더 이상 존재하지 않을 때 자동으로 nil로 인식되는 저장타입의 변수이다. 따라서 외부로부터

By sooop

Block

블럭의 변수 캡쳐링

블럭 내 변수 캡쳐링 C의 코드블럭은 사실상 여타 프로그래밍 언어의 클로저개념과 거의 동일하다. 블럭 내부에서는 다음의 변수들을 사용할 수 있다. 1. 전역변수와 정적변수는 블럭내에서 액세스 가능하다. 2. 블럭 내로 전달된 파라미터는 블럭 내부로 복사되며 지역변수처럼 액세스한다. 3. 블럭을 감싼 영역의 스택 변수는 블럭 내에서 액세스 가능하되 상수로 취급한다. 4. 블럭을

By sooop

cocoa

[Objective-C] Objective-C의 메모리 관리 방법

Objective-C의 메모리 관리 메모리를 할당하고 해제하지 않는다면 프로그램이 이런 작업을 반복하면 할 수록 계속해서 새로운 메모리를 사용하게 되고, 종국에 가서는 더 이상 쓸 수 있는 메모리가 남아나지 않는 상황이 벌어질 수 있다. 그리고 최근의 OS들의 그 복잡한 구조 때문에 이렇게 잘못 만들어진 프로그램이 아닌 다른 프로그램이 크래쉬될 수 있는 위험도

By sooop

memory management

20120117 :: OSX의 메모리 상태 보는 법

맥은 얼마 쓰지도 않아서 메모리를 다쓴다? 윈도에서 맥으로 넘어와서 버리기 힘든 나쁜 습관 중 하나는 메모리의 상태를 걱정하는 일이다. 무슨 소린고 하니 마치 메모리 먹는 괴물처럼 맥은 시스템에 달린 램을 거의 대부분 써버린다. 시스템의 메모리는 활성상태보기(activity)라는 앱을 실행해서 확인할 수 있는데, 여기서 보면 “여유 메모리”에 진짜 여유가

By sooop