2011-09-05 2 views
1

사용자 정의 접근 자의 의미를 알 수 있습니까?사용자 정의 접근 자 및 속성에서 "="?

왜이 정보를 설정자 옆에 추가할까요?

@property (assign,getter=isSelected) BOOL selected; 

및 setter

@property (copy,setter=setDefaultTitle:) NSString* title; 

는 동일합니다. @synthesize title = defaultTitle을 쓰는 중?

감사

+0

아니요, ** setter ** 메소드 만 변경 중이므로 아니요. –

답변

2
@property (assign,getter=isSelected) BOOL selected; 

은,이 속성에 액세스 myObject.isSelected을 사용할 수 있도록 다른 클래스하도록 지정합니다. 클래스에 대한 공용 인터페이스에서이 이름을 정의하고 있습니다. 구현 파일에

@synthesize title = defaultTitle; 


, 당신이 사용하는 다른 클래스를위한 title라는 이름의 속성을 정의하지만, 내부적으로 클래스에 실제로 이름 defaultTitle을 사용하도록 지정합니다. 이것은 일반적으로 사용자가 직접 수정하지 않으려는 defaultTitle이라는 이름의 자체 인스턴스 변수를 선언했을 때 수행됩니다.

+0

예를 들어, defaultTitle이 수정되지 않아도되지만 "myClass.title = smthg"할 수 있습니까? 변수 defaultTitle을 비공개로 설정하고 속성 제목을 공개하게하는 것은 무엇입니까? – Paul

+0

요점은 getter 및 setter 메서드를 강제로 사용하여 값을 변경할 때 코드가 실행되는지 확인하는 것입니다. 이렇게하면 다른 클래스가 속성을 사용할 수 있지만 getter 또는 setter를 거치지 않고 단순히 값을 변경할 수는 없습니다. –

+0

괜찮습니다. – Paul

1

@property (assign,getter=isSelected) BOOL selected;

명명 규칙을 준수하기 위해 게터를 지정해야합니다.

는 일반적으로 당신이 키 - 값을 준수 게터 데코레이터를 사용하는 -a 일반적인 이유는 준수하는 것입니다 (키 - 값은 프로그래밍 가이드를 코딩 참조) 코딩 있는 방법 이름을 접근 지정해야합니다 : 애플의 설명서를 인용 참조 부울 값에 대한 isPropertyName 규칙.

@property (copy,setter=setDefaultTitle:) NSString* title; getter도 지정하면 동일합니다. 그러나 getter/setter 메소드에 적절한 메소드 이름을 생성하려면 @synthesize title = defaultTitle;을 사용해야합니다.

+1

스택 오버플로에 오신 것을 환영합니다. [FAQ]를 읽으십시오. 특히 [서명을 사용하지 마십시오] (http://stackoverflow.com/faq#signatures) (특히 스팸으로 인식 될 가능성이있는 링크가 포함되어 있음). 소식 하단에 이름이 나타나게하려면 프로필에서 사용자 이름을 변경하십시오. – Gilles

+0

@ user929170 : 감사합니다. 그렇다면 정확하게 똑같은 것입니까? 유일한 차이점은 "isSmthg"또는 "smthg"로 속성을 호출하면됩니까? – Paul

+0

예. 참고 사항 : [BOOL Obj-C의 명명 규칙] (http://stackoverflow.com/questions/806900/naming-conventions-for-bool-obj-c-2-properties) –