《Objective-C 프로그램 설계(4판)》 독서 노트(4)

8.NSNumber (p336)
기본 데이터 유형은 수조와 같은 집합에 저장할 수 없기 때문에Foundation 프레임워크에 각종 데이터 유형을 전문적으로 처리하는 클래스가 있는데 그것이 바로 NSNumber이다. NSNumber는 사실 추상적인 클래스로 일부 데이터 대상을 봉인하고 처리 방법을 제공하는 것이다.
배열이 일부 NSNumber 객체에 저장되면 배열을 직접 인쇄하면 해당 NSNumber 객체의 값이 메모리에 있는 주소가 아닌 값이 출력되는 것을 알 수 있습니다.이것은 NSNumber 클래스에 NSObject를 직접 사용하는 방법이 아니라 사용자 정의 description 방법이 있음을 설명한다.
9. 블록의 사용(p356)
애플이 가입한 블록도 마찬가지로 블록을 추천해 프로그램의 성능을 높일 수 있는 방법이 많다.
예를 들어 정렬할 때의 비교 방법은 두 개의 Obj가 있는데 비교는 그들의 이름에 따라 비교한다. 만약에 당신이compareName 방법을 썼다면 블록에서 다시 호출하지 마라.
[array sortUsingComparator:
	^(id obj1, id obj2) {
		return [obj1 compareName: obj2];
}];

이렇게 하면 실행할 수 있지만 성능을 향상시키지 못한다. 더 좋은 방법은 블록에서 더 많은 동작을 해야만 성능을 향상시킬 수 있다.
[array sortUsingComparator:
	^(id obj1, id obj2) {
		return [obj1.name compare: obj2.name];
}];

10. 강변수(p413)
자동 인용 계수 (ARC) 는 의심할 여지없이 개발자에게 수동 인용 계수에 많은 힘을 절약해 주었다.그러나 예를 들면retain 순환 문제도 있다.
예를 들어 부자시도에서 부자시도는 자시도의 인용을 가지고 있고 자시도도 부자시도의 인용을 가지고 있다.이런 순환은 문제를 일으킬 수 있다.예를 들어 부모 보기가 삭제될 때 어떻게 처리합니까?부모 뷰에 대한 하위 뷰 참조는 더 이상 유효하지 않습니다.실제로 보기가 존재하지 않는 부모 보기를 인용하면 응용 프로그램의 충돌을 일으킬 수 있습니다.
그래서 강인용, 약인용의 탄생이 있을 것이다.
모든 대상 변수는 기본적으로 강변수입니다. 미리 설명할 필요가 없습니다.
모든 속성은 아닙니다. 기본값은assign입니다. 속성을strong, 또는 weak로 설명할 수 있습니다.

좋은 웹페이지 즐겨찾기