Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

getter,setter都要重写

$
0
0

1.objective-c下如果某属性的getter,setter都要重写的话

需要加上@synthesize propertyName = _propertyName;
// 合成指令,主动指定属性使用的成员变量名称
@synthesize image = _image;
//@synthesize iconF = _iconF;

/** 
 一旦重写了readonly属性的getter方法,_的成员变量就不存在了 

 如果还需要使用_成员变量,则需要使用@synthesize生成对应的成员变量
 */
//- (CGRect)iconF
//{
//    
//}
@synthesize iconImage = _iconImage;//与readOnly 关键字配合使用
/**
 问题: 使用readonly修饰成员变量的话,将不会生产带下划线的成员变量 undeclared identifier '_image',
 解决方法如下:@synthesize 合成指令 --主动指定属性使用的成员变量名称
 */

@synthesize image =_image;//@synthesize 中可以定义 与变量名不相同的getter和setter的命名,籍此来保护变量不会被不恰当的访问

2、点 . 使用 :
-- 使用前提 : 使用 @property @synthesize 合成 setter 和 getter 方法; 实际上 也允许使用 . 语法访问属性 和 对属性赋值;
-- 本质 : 点语法是一种简单写法, 其本质仍然是 getter 和 setter 方法;
-- 获取属性值 : 只要对象有 getter 方法, 程序可以使用 点 语法获取属性值;
-- 设置属性值 : 只要对象 setter 方法, 程序可以使用 点 语法获取属性值;

---------    KVC    ---------
3.KVC 简介 :
-- 引入 : Object-C 可以通过 getter setter 方法操作属性, 还可以 以字符串形式间接操作属性, 该方式是 Key Value Coding (KVC);
-- KVC 使用前提 : 最好在接口部分使用 @property 实现类部分使用 @synthesize 合成存取方法, 也可以只定义 "_属性名""属性名" 成员变量, 之后才能成功使用 KVC;
作者:u011018979 发表于2017/9/13 17:19:10 原文链接
阅读:76 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>