2014-11-17 8 views
2

ObjectiveC 초급 수준의 질문 게시하기. 속성을 사용하여 개체를 선언 할 때 두 가지 방법으로 특정 속성에 액세스 할 수 있습니다.가장 좋은 방법은 @synthesize 또는 자체 키워드로 속성 호출하기

@property(nonatomic,retain) NSString *str; 
  1. 사용 @synthesize propertyname 예 : self.str;

그래서이 두 방법의 차이이고 어느 것이 더 : @synthesize str;

  • 키워드 self 예를 사용하여 적당한. 시간 내 주셔서 감사합니다.

  • +3

    당신의 두 가지 옵션 [self str] 두 개의 완전히 다른 일을 사용해야합니다. – rmaddy

    +0

    도움이 되셨습니까? http://stackoverflow.com/questions/21355705/synthesize-vs-use-of-self – GenieWanted

    +0

    내 예제에서는 내 변수 str.So 특정 메서드를 가장 적합한 특정 문자열을 제공해야합니다. 감사합니다 –

    답변

    5

    @synthesize은 속성에 액세스하는 데 사용할 수 없습니다. 컴파일러 지시문입니다. @property을 사용하여 속성을 선언하면 접근 자 메서드 (getter 및 setter)가 컴파일러에서 자동으로 생성됩니다. 이전 버전에서는 명시 적으로 @synthezie을 사용하여 컴파일러에서 접근 자 메서드를 생성해야 함을 알았습니다. 최신 버전에서는 필요하지 않습니다. 컴파일러는 자동으로 접근 자 메서드를 생성합니다. 당신이

    @property (nonatomic, retain) NSString *str; 
    

    와 속성을 선언 그리고 @synthesize를 사용하지 않는 경우, 다음 바르가 _str되고 게터가

    -(NSString)str 
    

    되며 세터가 될 경우

    -(void)setStr:(NSString *)newStr 
    

    당신은

    로 @synthesize 특별히 언급 한 경우
    @synthesize str = _myStr 
    

    그러면 ivar은 _str 대신 _mystr이됩니다. 속성 STR에 액세스 할 수 inorder를

    그래서, 당신은 self.str 또는