6.属性

1、在类接口中声明实例变量 意味着对象布局在编译器就已经固定。只要访问该实例,编译器就把它替换成“偏移量”,如果增加新的实例变量会导致偏移量出错,需重新编译。 声明为属性,偏移量会在运行时查找。

2、通过属性特质来指定存储数据所需的正确语义(分为4大类)

2.1.原子性
//  由于历史原因,atomic会造成iOS上性能问题,一律用nonatomic。在者atomic事实上也无法保证线程安全
@property(nonatomic, readonly, getter=isViewLoaded) BOOL viewLoaded

//  2.2.读写权限:readonly只读,readwrite读写(默认值)
@property(nonatomic, readonly, getter=isViewLoaded) BOOL viewLoaded

/**
 *  2.3.内存管理语义
 *  assgin: ”纯量类型“
 *  strong: "拥有关系",先保留新值,释放旧值,设置新值
 *  weak: "非拥有关系",属性所指的值遭到销毁,属性值也会清空
 *  unsafe_unretained: 语义和assign相同,当目标对象遭到摧毁时,属性值不会清空
 *  copy: strong类似。不保留新值,保留其拷贝。源对象不可变还是用strong吧。
 */

/**
 *  2.4.指定存取的方法名: 属性是Boolean型时常用
 */
@property(nonatomic, readonly, getter=isViewLoaded) BOOL viewLoaded

3.设置属性对应的实例变量时,一定要遵从属性所声明的语义。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 系列文章全部为本人的学习笔记,若有任何不妥之处,随时欢迎拍砖指正。如果你觉得我的文章对你有用,欢迎关注我,我们一起...
    我爱吃栗子啊阅读 14,411评论 3 8
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,972评论 25 709
  • 近几年,盘扣作为旗袍唐装又风靡一时。长袖盘扣、短袖盘扣、对襟盘扣、斜襟盘扣 . 就连后开衩的直筒连衣裙也缀上了几颗...
    sayulynn阅读 1,274评论 0 1
  • 无志难建业 有志事竟成 年少早立志 业将随志成
    怀古的弄潮儿阅读 107评论 0 1