본문 바로가기
[Effective Objective-C] #35 좀비를 이용해 메모리 관리 오류를 디버깅하라 [Effective Objective-C] #35 좀비를 이용해 메모리 관리 오류를 디버깅하라 출처 : Effective Objective-C -메모리 관리 오류를 디버깅하는 것은 매우 어려운 일이다.할당 해제된 객체에 메시지를 보내는 일은 예상할 수 있듯이 전혀 안전하지 못하다.그러나 때때로 그것은 동작하기도 하고 동작하지 않기도 하는데 이는 객체가 사용했던 메모리를 덮어 썼느냐에 달려있다.메모리가 재사용되었는지 알 수 있는 방법은 없다.그로 인해 크래시가 가끔 일어난다.메모리의 일부분만 재사용되는 경우도 있는데 이 때 객체의 일부분은 여전히 유효하다.또한 순전히 운으로 또 다른 유효한 살아 있는 객체가 메모리를 덮어쓸 수도 있다.이 경우 런타임은 새로운 객체에 메시지를 보낼 것이고 객체는 응답을 할 .. 2017. 9. 29.
[Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #9 ~ #16 [Effective Objective-C] 목차와 요약을 통해 한 눈에 알아보는 Effective Objective-C #9 ~ #16 #9 : 클래스 클러스터 패턴을 사용해 구현의 상세 내용을 숨겨라. 클래스 클러스터 패턴은 간단한 퍼블릭 퍼사드 뒤편에 상세 구현을 숨길 때 사용할 수 있다. 클래스 클러스터는 시스템 프레임워크에서 널리 사용된다. 클래스 클러스터의 퍼블릭 추상 클래스의 하위 클래스를 만들 때는 항상 주의를 기울여야 한다. 그리고 문서가 있으면 반드시 먼저 읽어봐야 한다. 정리자 주 : 자바의 Interface 개념 #10 : 연관 객체를 사용해 기존 클래스에 사용자 정의 데이터를 연관 지으라 연관 객체는 객체 두 개를 연결하는 방법을 제공한다. 연관 객체의 메모리 관리 속성으로 최소 소.. 2017. 8. 19.
[Effective Objective-C] #13 불투명 메서드를 디버깅할 때 메서드 스위즐링을 사용하라 [Effective Objective-C] #13 불투명 메서드를 디버깅할 때 메서드 스위즐링을 사용하라 출처 : Effective Objective-C -Opaque Method ( 불투명 메소드 ) : 소스 코드를 볼 수 없는 메소드 -동적 바인딩은 호출될 메서드가 실행 시간에 바뀔 수 있다는 것을 뜻한다.이 능력은 굉장한 유연성을 제공하는데, 소스 코드가 없는 클래스 ( 즉 바이너리 파일만 있는 경우 ) 라도 하위 클래스를 만들거나 메서드를 재정의하지 않고도 기능을 변경할 수 있다.그래서 하위 클래스에서 메서드를 재정의하는 방법은 하위 클래스의 인스턴스만 변경한 기능을 사용할 수 있는 것에 반해, 이 방법은 해당 클래스(기본 클래스와 모든 하위 클래스)의 모든 인스턴스에서 새로운 기능을 사용할 수 .. 2017. 8. 15.
반응형