본고는 이라는 책의 독서 노트이다.이 책은 52개의 코드를 작성하는 건의를 제기하고 분류하고 상세하게 논술했다. 본고는 책 속의 각 장과 소절을 인용하고 자신의 이해에 따라 적당한 확대를 하여 책 속의 관건적인 정보를 최대한 완전하게 나타낼 수 있기를 바란다.
Objective-c 숙지
클래스의 헤더 파일에는 @class 키워드를 사용하여 전방향 성명을 하는 것을 최소화하고 헤더 파일 정의 클래스에서 관련 헤더 파일을 인용하지 않고 코드에 다시 도입하면 컴파일 효율을 높일 수 있으며 순환 인용의 발생을 방지할 수 있다.(상속과 비위탁용도의 협의는 제외)
다용도 서면량 문법은 호출구 함수보다 간단명료하고 직관적
형식 상수를 많이 사용하고 #define 예처리 명령을 적게 사용하며static const 키워드로 형식 정보가 있는 상수를 정의합니다. (컴파일할 때 #define처럼 바뀌지만 형식 정보가 있습니다.) 개인 상수는 정의해야 할 실현 파일입니다.extern 키워드를 사용하여 전역 상수를 정의합니다. (전역 기호표에 놓을 것입니다.) 클래스 이름을 접두사로 하고, 헤더 파일에 설명하고, 실행 파일에 값을 정의할 수 있습니다.
상태, 옵션, 상태 코드
를 매거진으로 표시
상태기의 상태, 전달 방법의 옵션 유적지 상태 코드 등 값을 매개로 표시하고 이 값에 알기 쉬운 이름을 지어야 한다.
만약에 어떤 방법에 전달되는 옵션을 매거형으로 표시하고 여러 옵션을 동시에 사용할 수 있다면 각 옵션의 값을 2의 멱으로 정의하여 위치나 조작을 통해 조합하도록 한다.
용 NSENUM 및 NSOPTIONS 매크로는 열거 유형을 정의하고 기본 데이터 유형을 나타냅니다.이렇게 하면 매거진이 개발자가 선택한 하위 데이터 형식으로 이루어지고 컴파일러가 선택한 형식을 사용하지 않는다는 것을 확보할 수 있다.
매거 유형을 처리하는 switch 문장에서default 지점을 실현하지 마십시오.이렇게 하면 새로운 매거진을 추가하면 컴파일러는 개발자에게 switch 문장이 모든 매거진을 처리하지 않았다고 알립니다.
객체, 메시지, 런타임 관련
이해property
@property 문법을 통해 대상에 봉인된 데이터를 정의할 수 있습니다.
'특질'을 통해 데이터 저장에 필요한 정확한 의미(원자성: atomic/nonautomic, 읽기와 쓰기 권한:readonly/readwrite, 메모리 관리 의미:assign/strong/week/unsafe unretained/copy, 방법명 getter=/setter=)
속성에 대응하는 실례 변수를 설정할 때 반드시 이 속성이 성명한 의미를 따라야 한다(copy의 의미 주의).
iOS 프로그램을 개발할 때 nonatomic 속성을 사용해야 한다. 왜냐하면 tomic 속성은 성능에 심각한 영향을 줄 수 있기 때문이다(원자성을 유지하기 위해 동기화 자물쇠를 사용한다).
대상 내부에서 가능한 한 실례 변수에 직접 접근
대상 내부에서 데이터를 읽을 때는 실례 변수를 통해 직접 읽어야 하고 데이터를 쓸 때는 속성을 통해 써야 한다.(Getter/setter 방법의 기능을 고려해야 하며, 업무 논리가 있으면 읽기와 쓰기 방법을 사용해야 한다)
초기화 방법과 dealloc 방법에서는 항상 실례 변수를 통해 데이터를 직접 읽어야 한다(하위 클래스는 읽기 방법을 다시 쓸 수 있기 때문에 초기화 과정에서 호출하면 잠재적인 문제를 일으킬 수 있다).
때때로 타성 초기화 기술로 특정한 데이터를 설정하는데 이런 경우 속성을 통해 데이터를 읽어야 한다.(Getter 방법에서 값이 있는지 판단하고 없으면 대상을 만들고 실례에 값을 부여한다)
'대상 등 동성'이라는 개념을 이해
대상의 등동성을 측정하려면 "isEqual:"과hash방법을 제공하십시오.
같은 대상은 반드시 같은hash코드를 가져야 하지만 두 개의hash코드가 같은 대상은 반드시 같지 않다(hash코드가 충돌할 수 있다).
각 속성을 맹목적으로 하나하나 감시하지 말고 구체적인 수요에 따라 검측 방안을 제정해야 한다.
hash방법을 작성할 때 계산 속도가 빠르고 해시코드 충돌 확률이 낮은 알고리즘을 사용해야 한다.
"패밀리 모드"숨기기로 세부 사항 구현
류족 모델은 디테일을 실현하는 것을 간단한 공공 인터페이스 뒤에 숨길 수 있다.(공장 방법을 통해 서로 다른 유형의 하위 클래스를 만드는 실례)
시스템 프레임워크에서 클래스(UIButton, NSArray...)를 자주 사용합니다.
클래스족의 공공 추상 기류에서 서브클래스를 계승할 때 조심해야 하며 개발 문서가 있으면 먼저 읽어야 한다.