2013-07-25 123 views
0

想象我的類的聲明看起來是這樣的:參考實例變量或屬性

@interface MapViewController : UIViewController <MKMapViewDelegate> 
{ 

} 

@property (nonatomic,weak) IBOutlet MKMapView *mapV; 

@end 

這是實現:

#import "MapViewController.h" 
#import <CoreLocation/CoreLocation.h> 

@interface MapViewController() 

@end 

@implementation MapViewController 

@synthesize mapV; 


- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [mapV setShowsUserLocation:YES]; 
} 

我的問題是,通過如上(在viewDidLoad)使用mapV我是引用實例變量或調用屬性? (在這種情況下,引用實例變量的正確方法是什麼?)。

+1

你應該接受你的問題還是人的任何答覆將停止回答您 –

回答

2

如果你使用:

mapV 

您直接accesing實例變量。

如果你使用:

self.mapV 

您accesing變量槽的setter /吸氣,以及那些制定者/吸氣劑使用您設置的屬性定義。作爲一個經驗法則,你想直接在init方法中訪問你的ivar,並在你使用self的其他類中直接訪問你。

如果你想獲得更多關於這方面的信息,就請點擊此鏈接:

Encapsulating data in Objective-C

+0

嗯,有一本書我讀和在'viewDidLoad'中,它也直接使用'[worldView setShowsUserLocation:YES];但是,在他們的情況下,'worldView'不是一個屬性,它直接是一個實例變量。這樣可以嗎? – user2054339

+0

這沒有錯,如果它只訪問過一次的變量,也許作者寧願不創建該屬性,這取決於您的代碼是個人選擇。如果我在init中訪問該變量,我總是會創建該屬性。 –

+0

我明白,但如果它是伊娃,那麼我可以直接像這樣訪問它:'[worldView someMethod]'?例如,不需要調用「self」? – user2054339