我仍然用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];
}
非常感谢
加里
答案 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的关键字才能自动查看插座。