2013-07-25 84 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