A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 Simpon 于 2016-10-27 10:32 编辑


开篇声明:本文是想各位同学们说明一下有关创建成员变量时,各个属性的意义以及一些偏底层的知识,大多数需要了解,因为面试官一般都会问到。首先说明一下定义一个成员变量时,@property是干什么的。

一、@property

@property 其实就是在编译阶段由编译器自动帮我们生成 ivar 成员变量,getter 方法,setter 方法。
使用“自动合成”( autosynthesis)这个过程由编译器在编译阶段执行自动合成,所以编辑器里看不到这些“合成方法”(synthesized method)的源代码。除了生成 getter、setter 方法之外,编译器还要自动向类中添加成员变量(在属性名前面加下划线,以此作为实例变量的名字)。为了搞清属性是怎么实现的,反编译相关的代码,他大致生成了五个东西:
  1. OBJC_IVAR_$类名$属性名称        // 该属性的“偏移量” (offset),这个偏移量是“硬编码” (hardcode),表 示该变量距离存放对象的内存区域的起始地址有多远
复制代码
实际流程:
游客,如果您要查看本帖隐藏内容请回复




接下来说一道常见的笔试题。
二、readwrite,readonly,assign,retain,copy,nonatomic,atomic,strong,weak属性的作用分别是什么。
游客,如果您要查看本帖隐藏内容请回复

三、什么情况使用 weak 关键字,相比 assign 有什么不同?

首先明白什么情况使用 weak 关键字?
   在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用 weak 来解决,比如:
游客,如果您要查看本帖隐藏内容请回复
weakassign 的不同点
游客,如果您要查看本帖隐藏内容请回复



四、使用 atomic 一定是线程安全的吗?
答案很明显。不是,atomic 的本意是指属性的存取方法是线程安全的,并不保证整个对象是线程安全的。
举例:
游客,如果您要查看本帖隐藏内容请回复



当然,关于属性关键字所引出的技术点及问题不只如此.如需了解更多,请点击【iOS技术分享】关于属性关键字,你又知道多少?(下)


精华推荐:

83 个回复

倒序浏览
非常值得观看,在下谢谢楼主
回复 使用道具 举报
Wangyk 发表于 2016-5-6 23:30
非常值得观看,在下谢谢楼主

不用客气 都是朋友
回复 使用道具 举报
谢谢楼主,这么好的资源
回复 使用道具 举报
fkcong 来自手机 中级黑马 2016-5-10 10:07:31
报纸
多谢分享~~~
回复 使用道具 举报
关于属性关键字,你又知道多少?(上)
回复 使用道具 举报
楼主强强强
回复 使用道具 举报
好好好好
回复 使用道具 举报
看完全贴,学习学习
回复 使用道具 举报
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
回复 使用道具 举报
这么好的资源
回复 使用道具 举报
这个困惑好久了
回复 使用道具 举报
如获至宝,非常感谢
回复 使用道具 举报
看看............
回复 使用道具 举报
66666666666666
回复 使用道具 举报
很给力啊 顶一个
回复 使用道具 举报
TaoT 中级黑马 2016-7-19 11:42:33
17#
关于属性关键字,你又知道
回复 使用道具 举报
66666666666666
回复 使用道具 举报
学习一下
回复 使用道具 举报
分享,很不错,完美的,有用
回复 使用道具 举报
12345下一页
您需要登录后才可以回帖 登录 | 加入黑马