@property,在这种情况下好吗?

时间:2010-06-02 15:28:11

标签: iphone objective-c cocoa-touch

我仍然用Objective-c找到了我的脚,并想知道在下面的两个对象上使用@property是否可以接受。

#import <UIKit/UIKit.h>
#import <MapKit/MapKit.h>

@interface MapViewController : UIViewController <MKMapViewDelegate, CLLocationManagerDelegate> {
    CLLocationManager *locationManager;
    IBOutlet MKMapView *googleMapView;
}
@property(nonatomic, retain) CLLocationManager *locationManager;
@property(nonatomic, retain) MKMapView *googleMapView;
@end

我使用它们的原因之一是我可以在viewDidUnload中使用setter,我似乎很多地使用@property并且只是想知道在这种情况下使用是否可以接受?

-(void)viewDidUnload {
    [self setLocationManager:nil];
    [self setGoogleMapView:nil];
    [super viewDidUnload];
}

非常感谢

加里

4 个答案:

答案 0 :(得分:3)

是。 @property非常普遍。使用它不应该感到惊讶。您的viewDidUnload完全正确。

答案 1 :(得分:1)

假设您也使用@synthesize,那么这正是您应该使用它的原因。不要过于担心'非原子',当然如果你愿意,你可以使用点语法

self.locationManager = nil;

答案 2 :(得分:0)

这对我来说似乎完全没问题。

我能想到的唯一一个不可接受的案例就是这些属性必须是私有的。 It is a bit trickier to make properties private,但隐藏课堂内部不受虐待是必不可少的做法!

答案 3 :(得分:0)

只是一个注释,但您也可以在属性声明中使用IBOutlet关键字。在这种情况下并不重要,但如果您正在合成ivars而不是明确声明它们,那么您需要IB的关键字才能自动查看插座。