오랫동안 읽었을 때 죄송합니다. 이것은 제가 혼란스러워하는 책의 일부입니다.ivars 명명 규칙 및 @ 합성물
(엑스 코드 (4)가 채용 된) 코딩 컨벤션의 현재 추세 인스턴스 변수 이름 주인공 등 밑줄 (_)을 사용 이다. 따라서 템플릿 코드 에서 Xcode가 _로 시작하는 변수로 생성 한 참조는 인스턴스 변수를 직접 이름으로 참조합니다. @synthesize 지시문을 볼 때
@synthesize window = _window;
하지 _window
는 @의 propterty 선언 할 수있는 이유는/window
에 할당하는 대신 처음부터 합성?
그것은 창을 명명 된 속성에 대한 getter와 setter를 합성하고 _window (명시 적으로 선언하지 않아도되는)라는 인스턴스 변수와 해당 속성을 연결할 말했다. 이렇게하면 인스턴스 변수와 속성을 구별 할 수 있으며 은 setter 및 getter 메서드를 사용하여 인스턴스 변수 의 값을 설정하고 검색하는 것이 좋습니다. 즉, 과 같은 글을 쓰는 것입니다.
[window makeKeyAndVisible]; // 작동하지 않습니다
window라는 인스턴스 변수가 없으므로 실패합니다. 대신 은 인스턴스 변수의 이름을 직접 이름으로 지정해야합니다 (예 : ).
[_window makeKeyAndVisible];
또는 바람직하게는, 상기 접근 방식을 사용
[self.window makeKeyAndVisible];
왜 self.window
은 다른 방법으로 밑줄이 필요하지 않습니까?