《Objective-C 프로그램 설계(4판)》 독서 노트(4)
1309 단어 Objective-C억지로 인용하다
기본 데이터 유형은 수조와 같은 집합에 저장할 수 없기 때문에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로 설명할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PreferenceBundle에서 오른쪽 상단에 Respring 버튼을 클릭합니다.만나서 반갑습니다, Minazuki라고합니다. 프로필 이름 : Minazuki_dev Twitter : Repo : 아직 중학생이므로 말이 이상한 곳이 있습니다만 용서해 주세요… 🙏 theos (Mac이든 단품이든 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.