2010-07-30 3 views
0

나는 누군가가 다음을 설명 할 수 있는지 궁금해. 둘 다 똑같은거야? 두 호출 모두 "setSeparatorColor"나는 그들이 둘 다 속성에 대한 접근자를 호출하는 것 같아요.@property 접근 자라 부릅니까?

[myTableView setSeparatorColor:[UIColor orangeColor]]; 

.

[[self myTableView] setSeparatorColor:[UIColor orangeColor]]; 

게리.

답변

-1

수정, 그들은 모두 같은

[myTableView setSeparatorColor:[UIColor orangeColor]]; 

이 속성에 대한 접근을 호출하는 경우

[[self myTableView] setSeparatorColor:[UIColor orangeColor]]; 

으로 직접 변수에 접근 한 다음에 setSeparatorColor 메시지를 보내는 일을

+2

아니오가 다릅니다. 첫 번째 변수는 인스턴스 변수에 직접 액세스합니다. – JeremyP

+1

그게 내가 말한 것이 아닌가? – Liam

3

동일하지 않습니다.

첫 번째 버전에서는 어떤 클래스의 인스턴스 변수 인 myTableView을 사용합니다.

두 번째 버전에서는 value를 사용하며 같은 이름의 메서드에서 반환됩니다. 첫 번째 단계에서 현재 클래스의 메서드 - (..)myTableView;이 호출됩니다.이 메서드는 값을 반환합니다. 그리고 다음 단계에서 - 당신은 - (..)setSeparatorColor:.. 반환 된 객체의 메소드를 사용합니다. 물론 (@synthesize myTableView; 또는 - (..)myTableView { return myTableView; }과 같은 메소드 구현을 사용하는 경우) 첫 번째 버전과 동일한 변수이지만 필수 조건은 아닙니다 (구현에 따라 다름). 또한 - (..)myTableView;에는 값을 반환하는 것이 아니라 부가적인 작업을 수행 할 수 있습니다.

예 (myTableView 및 [자기 myTableView 일부 조건에 따라 상이 할 수있다) :

// myClass.h 
@interface myClass : UIViewController { 
    UITableView *myTableView; 
} 
@property (nonatomic, retain) UITableView *myTableView; 
@end; 

// myClass.m 
#import "myClass.h" 

@implementation myClass 

@dynamic myTableView; 

- (UITableView *)myTableView { 
    return (someConditionIsTrue) ? myTableView : nil; 
} 

- (void)setMyTableView:(UITableView *)value { 
    if (myTableView != value) { 
     [myTableView release]; 
     myTableView = [value retain]; 
    } 
} 

@end; 
관련 문제