
OC 中readonly怎么使用
设置一个属性为readonly,可是怎么给这个属性赋初始值啊,连初始值都设置不了要这个readonly何用...
设置一个属性为readonly,可是怎么给这个属性赋初始值啊 ,连初始值都设置不了 要这个readonly何用
展开
展开全部
OC中此处的readonly和你所想的还是有区别的,当你在@property中用readonly时只是表示编译器会帮你自动生成getter方法,同时不会自动帮你生成setter方法。既然编译器不给你setter你又不自己去定义setter方法。那你当然无法赋值。----说了这么多回头看还是没解决你的问题,下面才是真格的:你可以通过方法来赋值;代码如下:
#import <Foundation/Foundation.h>
@interface BaseClass : NSObject {
}
@property (nonatomic, copy,readonly) NSString *name;
- (void)setName:(NSString *)name;
@end
---------
#import "BaseClass.h"
@implementation BaseClass
@synthesize name=_name;
- (void)setName:(NSString *)name {
if (_name != name) {
[_name release];
_name = [name copy];
}
}
@end
主函数调用:
BaseClass *base = [[BaseClass alloc] init];
[base setName:@"Sheldon"];//通过方法给readonly属性赋值;
NSLog(@"base class's name = %@", base.name);
-------
运行结果:
2014-08-20 16:07:21.562 Hello[5062:303] base class's name = Sheldon
更多了解欢迎访问:http://blog.csdn.net/wuming22222/article/details/38706605
#import <Foundation/Foundation.h>
@interface BaseClass : NSObject {
}
@property (nonatomic, copy,readonly) NSString *name;
- (void)setName:(NSString *)name;
@end
---------
#import "BaseClass.h"
@implementation BaseClass
@synthesize name=_name;
- (void)setName:(NSString *)name {
if (_name != name) {
[_name release];
_name = [name copy];
}
}
@end
主函数调用:
BaseClass *base = [[BaseClass alloc] init];
[base setName:@"Sheldon"];//通过方法给readonly属性赋值;
NSLog(@"base class's name = %@", base.name);
-------
运行结果:
2014-08-20 16:07:21.562 Hello[5062:303] base class's name = Sheldon
更多了解欢迎访问:http://blog.csdn.net/wuming22222/article/details/38706605
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询