黑马程序员技术交流社区
标题:
【iOS技术分享】关于属性关键字,你又知道多少?(上)
[打印本页]
作者:
Simpon
时间:
2016-5-6 17:17
标题:
【iOS技术分享】关于属性关键字,你又知道多少?(上)
本帖最后由 Simpon 于 2016-10-27 10:32 编辑
开篇声明:
本文是想各位同学们说明一下有关创建成员变量时,各个属性的意义以及一些偏底层的知识,大多数需要了解,因为面试官一般都会问到。
首先说明一下定义一个成员变量时,
@property
是干什么的。
一、
@
property
@property
其实就是
在编译阶段由编译器自动帮我们生成
ivar 成员变量,getter 方法,setter 方法。
使用“自动合成”( autosynthesis)这个过程由编译器在编译阶段执行自动合成,所以编辑器里看不到这些“合成方法”(synthesized method)的源代码。除了生成 getter、setter 方法之外,编译器还要自动向类中添加成员变量(在属性名前面加下划线,以此作为实例变量的名字)。为了搞清属性是怎么实现的,反编译相关的代码,他大致生成了五个东西:
OBJC_IVAR_$类名$属性名称 // 该属性的“偏移量” (offset),这个偏移量是“硬编码” (hardcode),表 示该变量距离存放对象的内存区域的起始地址有多远
复制代码
实际流程:
接下来说一道常见的笔试题。
二、readwrite,readonly,assign,retain,copy,nonatomic,atomic,strong,weak属性的作用分别是什么。
三、什么情况使用
weak
关键字,相比
assign
有什么不同?
首先明白什么情况使用
weak
关键字?
在 ARC 中,在有可能出现循环引用的时候,往往要通过让其中一端使用
weak
来解决,比如:
weak
和
assign
的不同点
四、使用
atomic
一定是线程安全的吗?
答案很明显。不是,atomic 的本意是指属性的存取方法是线程安全的,并不保证整个对象是线程安全的。
举例:
当然,关于属性关键字所引出的技术点及问题不只如此.
如需了解更多,请点击
【iOS技术分享】关于属性关键字,你又知道多少?(下)
精华推荐:
黑马程序员:为苹果与iOS开发者的前景正名
与君共勉 --- 记黑马22期同学成长经验。
【持续更新】2016年最全最新的iOS视频+软件+源码+面试/技术
关于iOS 10最新的课程视频及demo第三弹,火速发布了
作者:
Wangyk
时间:
2016-5-6 23:30
非常值得观看,在下谢谢楼主
作者:
Simpon
时间:
2016-5-9 09:09
Wangyk 发表于 2016-5-6 23:30
非常值得观看,在下谢谢楼主
不用客气 都是朋友
作者:
wendaogds
时间:
2016-5-9 23:43
谢谢楼主,这么好的资源
作者:
fkcong
时间:
2016-5-10 10:07
多谢分享~~~
作者:
18316761642
时间:
2016-5-13 16:23
关于属性关键字,你又知道多少?(上)
作者:
luffy99
时间:
2016-5-17 10:53
楼主强强强
作者:
heima_heimahaha
时间:
2016-5-20 20:50
好好好好
作者:
zyp1343832
时间:
2016-5-27 16:44
看完全贴,学习学习
作者:
1937362521
时间:
2016-5-27 17:56
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈
作者:
Casslte
时间:
2016-5-28 19:40
这么好的资源
作者:
云飘雾散
时间:
2016-6-13 21:15
这个困惑好久了
作者:
wodetaoshu
时间:
2016-6-19 13:55
如获至宝,非常感谢
作者:
yangqiangyang
时间:
2016-7-4 22:45
看看............
作者:
浪子党
时间:
2016-7-5 19:36
66666666666666
作者:
qqikufei
时间:
2016-7-18 22:52
很给力啊 顶一个
作者:
TaoT
时间:
2016-7-19 11:42
关于属性关键字,你又知道
作者:
gdutyong
时间:
2016-7-19 16:06
66666666666666
作者:
CalvinCheung
时间:
2016-9-20 08:55
学习一下
作者:
HuyaRC
时间:
2016-11-2 21:50
分享,很不错,完美的,有用
作者:
有无相生
时间:
2016-11-7 10:01
厉害了 我的鸽
作者:
Vincent丶L
时间:
2016-11-13 15:59
6666666666666
作者:
poi1234bnm
时间:
2016-11-19 18:27
学习。。很多很陌生
作者:
乔布永
时间:
2016-11-22 14:13
还非得回复 服了
作者:
SmallOrange
时间:
2016-11-22 17:57
好东西!!!!!!!!!!!!!!!!!
作者:
weiboyuan
时间:
2016-11-23 10:48
looklooklook
作者:
wq920111
时间:
2016-11-23 14:16
2iwdwdenewwwwwwwww
作者:
geniuswen
时间:
2016-12-1 17:02
学习了学习了学习了
作者:
妍飞凤舞
时间:
2016-12-6 17:59
分享,很不错,完美的,有用
作者:
floating_dream
时间:
2016-12-6 18:36
谢谢楼主
作者:
赫连
时间:
2016-12-9 23:18
作者:
大大说
时间:
2016-12-12 16:48
范文芳请问服务器饿器服务器我企鹅问
作者:
小宇文
时间:
2016-12-28 10:01
一直纠结这个问题含糊不清,学习学习
作者:
小宇文
时间:
2016-12-28 10:02
一直纠结这个问题含糊不清,学习学习
作者:
awenlovelearn
时间:
2016-12-28 17:58
想学习啊
作者:
awenlovelearn
时间:
2016-12-28 17:58
想学习啊
作者:
awenlovelearn
时间:
2016-12-28 17:59
想学习啊
作者:
jin_1102
时间:
2016-12-29 16:40
我要学习一下!
作者:
jin_1102
时间:
2016-12-29 16:41
我要学习一下!
作者:
jin_1102
时间:
2016-12-29 16:42
我要学习一下!
作者:
zhang987
时间:
2016-12-29 16:43
好东西,先mark
作者:
我狂者
时间:
2017-2-17 17:26
我是菜鸟啊
作者:
我狂者
时间:
2017-2-17 17:26
qq123456789
作者:
花开~的季节
时间:
2017-2-17 17:40
是的是的
作者:
ghyg527
时间:
2017-2-27 09:15
66666666666666
作者:
robin1210
时间:
2017-2-27 11:14
好资源,从头开始深入了解
作者:
Hzming
时间:
2017-3-6 14:34
回复可见!!!
作者:
森林水滴
时间:
2017-3-7 20:38
感谢分享
作者:
sdlwwl0728
时间:
2017-3-30 11:10
滴滴滴滴滴滴滴滴滴地
作者:
baowuwolf
时间:
2017-3-30 13:20
看看是不是原著,内容不错,收藏了
作者:
misscxuan
时间:
2017-3-31 12:52
给力给力给力给力给力给力给力给力
作者:
664095924
时间:
2017-4-3 19:33
henhaoya hahaha
作者:
fuxi
时间:
2017-4-27 17:23
学习学习,感谢分享,谢谢
作者:
JLX
时间:
2017-5-4 16:20
-------------------------
作者:
18150091472
时间:
2017-5-11 16:18
黑马文章写得很好,值得看~
作者:
べ戀¢豬そ☆
时间:
2017-5-16 21:49
看看大牛怎么写的
作者:
ZakZhou
时间:
2017-5-24 09:28
哈哈哈哈哈哈哈
作者:
shashaliu
时间:
2017-6-5 16:04
dsgteewgtwqtwetw
作者:
半心lang
时间:
2017-6-20 15:10
sdgfasdfsadfasdf
作者:
zhangyuze
时间:
2017-7-12 15:46
沙发沙发大幅
作者:
wilon
时间:
2017-7-19 12:56
隐藏的内容是什么到底有没有用
作者:
yu123321
时间:
2017-7-19 20:40
使用 atomic 一定是线程安全的吗?
答案很明显。不是,atomic 的本意是指属性的存取方法是线程安全的,并不保证整个对象是线程安全的。
举例:
作者:
Minecode
时间:
2017-7-25 13:56
很棒的教程
作者:
阿西巴
时间:
2017-9-6 17:49
万能的楼主啊!!!!!!!
作者:
janyjany
时间:
2017-9-14 00:03
很好的解答,给我解答了很久的疑惑
作者:
茶无此名
时间:
2017-9-14 15:27
学习学习
作者:
newkey1000
时间:
2017-11-12 01:36
666
作者:
a1137611824
时间:
2017-11-23 21:05
挺好的,支持吧主的内容,赞一个
作者:
redstar110
时间:
2017-11-28 17:12
实就是在编译阶段由编译器自动帮我们生成 ivar 成员变量,getter 方法,setter 方法
作者:
magicqqwe
时间:
2017-11-30 16:34
巩固下基本知识点,都快忘了
作者:
mcmilo
时间:
2017-12-6 16:13
weak,assign
作者:
skyz1125
时间:
2018-1-5 15:23
看看应该是不错的
作者:
Haley_SJ
时间:
2018-1-8 11:52
666,一直似懂非懂,看看
作者:
因为太有钱
时间:
2018-1-24 09:33
作者:
苏明明
时间:
2018-2-22 15:36
好的,我又来试试了
作者:
luodongdong
时间:
2018-4-10 17:22
好好学习下
作者:
wolfhous
时间:
2018-4-11 14:11
123456789123456789
作者:
wolfhous
时间:
2018-4-11 14:19
345678987654345678
作者:
hughhh
时间:
2018-4-25 10:19
1adasdad'd'd
作者:
baby14
时间:
2018-7-18 07:52
多谢分享
作者:
清爽柠檬汽水
时间:
2018-10-22 15:40
关于属性关键字,你又知道多少?
作者:
GunBusterV
时间:
2018-10-22 17:45
学习学习
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2