OC 中readonly怎么使用

设置一个属性为readonly,可是怎么给这个属性赋初始值啊,连初始值都设置不了要这个readonly何用... 设置一个属性为readonly,可是怎么给这个属性赋初始值啊 ,连初始值都设置不了 要这个readonly何用 展开
 我来答
白天上课
推荐于2018-03-13 · 超过25用户采纳过TA的回答
知道答主
回答量:71
采纳率:0%
帮助的人:43.6万
展开全部
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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式