OC 中readonly怎么使用

设置一个属性为readonly,可是怎么给这个属性赋初始值啊,连初始值都设置不了要这个readonly何用... 设置一个属性为readonly,可是怎么给这个属性赋初始值啊 ,连初始值都设置不了 要这个readonly何用 展开

第1个回答  2019-06-29
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
相似回答