经常看到一些属性声明为
@property(nonatomic,readonly,retain) UILabel *textLabel __OSX_AVAILABLE_STARTING(__MAC_NA,__IPHONE_3_0);
可能看起来比较费解,那什么情况下这样用呢?
此方法中的setter方法外部禁止访问,内部可以重定义声明后,在类的内部使用。
示例如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| // QCar.h
@interface QCar:NSObject {
}
@property (nonatomic, readonly, retain) NSString* carName;
@end
// QCar.m
@interface QCar ()
@property (nonatomic,readwrite,retain) NSString* carName;
-(void)testFunction:(NSString*)carName;
@end
@implememtation QCar
@synthesize carName;
-(void)testFunction:(NSString*)carName {
self.carName= carName;//OK,编译运行一切ok
}
@end
|
如果在QCar类的外部调用QCar的方法,编译会报错!