一般情况下,readonly属性的值是无法修改的,但可以通过特殊方式修改。
定义一个student的类,其中name属性为readonly类型的变量

@interface JFStudent : NSObject@property(nonatomic,copy,readonly) NSString *hisName;@property(nonatomic,copy) NSString *age;-(instancetype)initWithName:(NSString *)name age:(NSString *)age;@end

@implementation JFStudent-(instancetype)initWithName:(NSString *)name age:(NSString *)age{if (self = [super init]) {_hisName = name;_age = age;}return self;
}@end

然后定义一个JFStudent类型的变量

JFStudent *stu = [[JFStudent alloc]initWithName:@"tom" age:@"11"];
NSLog(@"修改前++++++++%@",stu.hisName);

修改hisName变量,会提示出错。

这时可以用kvc来设置

[stu setValue:@"胡说" forKey:NSStringFromSelector(@selector(hisName))];
NSLog(@"修改后----------------%@",stu.hisName);

打印结果为:

若age为NSInteger属性,

@property(nonatomic,assign,readonly) NSInteger age;

则可以用

[stu setValue:@(20) forKey:NSStringFromSelector(@selector(age))];

打印结果为

若想禁止kvc修改readonly属性的值,则可以在定义readonly属性的类中添加该方法

//默认返回为YES,表示可允许修改。改为NO即可
+(BOOL)accessInstanceVariablesDirectly{return NO;
}

转载于:https://www.cnblogs.com/Apologize/p/6306690.html

修改readonly属性的值相关推荐

  1. python修改类的属性值_python 四种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,直接修改类属性的值...

    三种方法修改类变量,实例对象调用类方法改变类属性的值,类对象调用类方法改变类属性的值,调用实例方法改变类属性的值,类名就是类对象,city就是类变量, #coding=utf-8 class empl ...

  2. jquery attr(“xxx“,“mmm“)修改标签属性的值

    jquery attr("xxx","mmm")修改标签属性的值 详细讲解

  3. Selenium2+python自动化25-js处理日历控件(修改readonly属性)

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  4. vue修改计算属性的值_Vue语法高级之计算属性和侦听器

    计算属性和侦听器都可以监听到data区数据的变化,当数据变化时可以触发方法的调用,从而在方法内部可以进行相应的逻辑处理. 计算属性的语法格式是:computed: {} 侦听器的语法格式是:watch ...

  5. vue修改计算属性的值_「Vue学习记录五」计算属性和侦听器

    1: 计算属性: (内置缓存机制) 当更改age的时候, fullName 函数不执行: 当更改fristName的时候, fullName 函数才执行 <div id = "app& ...

  6. js获取html元素并且修改属性,JavaScript中获取和修改元素属性的值

    在上一篇关于<JavaScript中几个操作元素对象的函数方法>文章中记录了分别通过元素的ID属性,元素的标签名,Class类名来获取元素的节点对象. 今天记录两个函数可以用来获取和修改获 ...

  7. Python+selenium自动化-js处理日历控件(修改readonly属性)

    前言 今天写自动化脚本的时候遇到一个需要更改日期的控件,不想费劲巴拉的去找日历的定位,但是又没办法直接输入我想输的日期时间,想了会儿之后决定用js解决日历控件 基本思路:先用js去掉readonly属 ...

  8. pythongui日历控件_Selenium2+python自动化25-js处理日历控件(修改readonly属性)

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

  9. python时间控件readonly属性_Selenium2+python自动化----js处理日历控件(修改readonly属性)...

    前言 日历控件是web网站上经常会遇到的一个场景,有些输入框是可以直接输入日期的,有些不能,以我们经常抢票的12306网站为例,详细讲解如何解决日历控件为readonly属性的问题. 基本思路:先用j ...

最新文章

  1. 那些做了多少次错了多少次的题目
  2. Linux下简单的系统调用
  3. oracle绑定主键,oracle添加主键的四种方法:
  4. javascript真的是异步的吗?且看setTimeout的实现原理以及setTimeout(0)的使用场景
  5. iOS打开沙盒html,iOS WKWebView加载本地/沙盒HTML及css、images
  6. 计算机史话 —— 回车和换行 与 文本文件和二进制文件
  7. 【转】Java杂谈(八)--Servlet/Jsp
  8. php类似indexof的方法[转]
  9. PTA程序设计基础6 7-1 列表排序、逆序 (10 分)C语言解法
  10. cuteFTP使用教程
  11. pandas读取文件自动生成表头
  12. mysql中可以查询英文却查不了中文或数字
  13. 伦敦的威斯敏斯特大教堂地下室的墓碑林中,一块震撼全世界的一段碑文。
  14. 解决active样式在ios手机上没有生效的问题
  15. BCB数据库问题总结
  16. 【CVPR2021】AdderSR: Towards Energy Efficient Image Super-Resolution
  17. 报告称苹果应用商店逾千款应用存在漏洞
  18. EC-PCA: 利润中心主数据维护流程
  19. 推荐一位我的朋友,艾小仙,前阿里巴巴技术专家P7
  20. sklearn进行垃圾邮件分类

热门文章

  1. 主流 .NET界面控件套包对比介绍
  2. esxi6.7虚拟机无法开机,提示“没有更多空间可供虚拟磁盘server-000001.vmdk使用。也许通过释放相关卷上的磁盘空间并单击 重试 继续此会话,单击 取消 可终止此会话”
  3. 切换IP地址的小工具
  4. 元征科技Golo3 硬件拆解分析报告——榕树投资研究员.杜志君(2014-07-21
  5. xyz三维坐标系怎么画?
  6. 计算机保研经验(中科大、北航、成电、西交、南大)
  7. show()方法和hide()方法
  8. c++ 11 thead
  9. [深度学习基础] 斯坦福CS231n李飞飞计算机视觉Lecture 7笔记
  10. 此计算机策略设置不允许安装win,Win10设置了系统策略禁止进行此安装怎么解决?...