iOS - 修改readonly修饰的属性

简介: readonly:只读属性,只生成getter方法,也就是说只能访问变量,不能修改。

readonly:只读属性,只生成getter方法,也就是说只能访问变量,不能修改。

那我们如果想要改变类中声明为readonly的属性值该怎么做呢

@interface Person : NSObject
@property (nonatomic, copy, readonly) NSString *nickname;
@end


直接修改会报错:


image.png


可以用kvc来给声明为readonly的属性重新赋值

- (void)viewDidLoad {
    [super viewDidLoad];
    Person *p = [[Person alloc] init];
    //p.name = @"cc";
    [p setValue:@"cc" forKey:NSStringFromSelector(@selector(nickname))];
    NSLog(@"\n p.name: %@ \n",p.nickname);
}


打印:

2021-05-04 18:50:16.403238+0800 ReadonlyDemo[83730:9454419] 
 p.name: cc


相关文章
|
iOS开发
iOS CAEmitterLayer 属性介绍
iOS CAEmitterLayer 属性介绍
45 0
|
2月前
|
iOS开发 UED 开发者
iOS 手势中cancelsTouchesInView delaysTouchesBegan delaysTouchesEnded 三种属性的使用
iOS 手势中cancelsTouchesInView delaysTouchesBegan delaysTouchesEnded 三种属性的使用
75 9
|
3月前
|
Swift iOS开发
iOS开发-属性的内存管理
【8月更文挑战第12天】在iOS开发中,属性的内存管理至关重要,直接影响应用性能与稳定性。主要策略包括:`strong`(强引用),不维持对象生命期,可用于解除循环引用;`assign`(赋值),适用于基本数据类型及非指针对象属性;`copy`,复制对象而非引用,确保对象不变性。iOS采用引用计数管理内存,ARC(自动引用计数)自动处理引用增减,简化开发。为避免循环引用,可利用弱引用或Swift中的`[weak self]`。最佳实践包括:选择恰当的内存管理策略、减少不必要的强引用、及时释放不再使用的对象、注意block内存管理,并使用Xcode工具进行内存分析。
|
5月前
|
前端开发 iOS开发
input框设置placeholder属性在iOS中显示不完整
input框设置placeholder属性在iOS中显示不完整
69 1
|
iOS开发
iOS 渐变颜色 CGGradientCreateWithColorComponents 属性介绍
iOS 渐变颜色 CGGradientCreateWithColorComponents 属性介绍
151 0
|
存储 安全
11-iOS关联对象实现weak属性
11-iOS关联对象实现weak属性
296 0
|
iOS开发
iOS开发 - 不用copy修饰的字符串属性什么情况下不安全
iOS开发 - 不用copy修饰的字符串属性什么情况下不安全
90 0
|
iOS开发
iOS 修改tabbar背景颜色为纯白色
iOS 修改tabbar背景颜色为纯白色
1635 0
|
iOS开发
iOS - Runtime 动态添加属性
我们在开发中常常使用类目Category为一些已有的类扩展功能。虽然继承也能够为已有类增加新的方法,而且相比类目更是具有增加属性的优势,但是继承毕竟是一个重量级的操作,添加不必要的继承关系无疑增加了代码的复杂度。
|
iOS开发
iOS - 如何深拷贝Array内元素、自定义对象、及自定义对象的属性(下)
关于深拷贝、浅拷贝,请看上篇iOS - 深拷贝、浅拷贝探索验证