iOS 「assign 乌龙」引发的一些思考

​最近修复的两个 bug 都是声明属性时用了 assign 造成的,虽然表现出来的形式不一样,但本质是一样的。至于最初为什么写成了 assign 已经不可追溯,但这真是一个初级工程师都不该犯的错误。

为了增强印象,我又重新温习了 iOS中copy,strong,retain,weak和assign的区别 ,不得不说文章写的真好,但是只是看完并没有太大的意义,把代码敲一遍或者只是复制到项目中运行一下,理解会比单纯看一遍深的多。

我必须承认我是运行完代码才对 copy 有了真正的理解,以前对深拷贝、浅拷贝都是当做面试题目背诵一下就OK的,但是以现在的行情只会背诵概念肯定找不到工作,去年我就已经有所领受了,面试官会刨根问底恨不得连汇编都考察到了。

包括可变、不可变的概念,也是在今天才彻底明白了,之所以说 NSString 是不可变的类型,是它的值的地址不变,如果要给 NSString 一个新值,那么 NSString 会重新进行一遍初始化,重新申请一个值地址,而不是改变了原来的地址上面的值,所以说 NSString 是不可变类型。

文章还引申出来了 当NSString长度小于10时,不再遵循引用计数规则 的问题,这又涉及到了堆和栈的概念,以前我也总是分不清堆和栈,也分不清他们的分工,总要在面试前强行背诵一番才行。明明敲敲代码就能加深理解的,以前总觉得敲代码太浪费时间了总想投机取巧,以为多看看知道就行了,真是聪明反被聪明误。

另外大云从3月初开始了新一轮的技术学习,大云喜欢跟随一个老师一直学习,跟我还是挺不一样的,我从小就不咋能听进课去,我感觉我这么多年的学习基本上都是靠自己的悟性,后来在物理上实在是没有什么悟性了,所以挂了,包括现在感觉技术上总是没有什么提升我也觉得可能是我悟性太差了。

说回大云,大云真的是蛮刻苦的,这次老师留的作业是总结一下课程内容,2个小时的视频内容大云同学整理了4天才把作业交上去了,我其实是有些不解的,我就问他为什么写这么久啊,大云说「我要一边看一边理解,不明白的地方再去网上找找答案,再用自己的话总结下来这都是需要时间的啊」。我真的是很佩服大云这种刨根问底的精神的,这也是为什么大云跟别人讲一个东西的时候总是能说的头头是道,因为他确实是知道的很清楚。

如果这个作业给我写可能一两个小时就写完了,把视频快进到关键知识点抄下来,最后再稍作整理就完事了,但我真正吸收了多少只有鬼知道。这也是为什么我的表达能力不咋地的原因吧,因为很多东西我都是略知一二,但是问着问着就说不上来了,总是不愿意下力气去深究一个点,很早就意识到这个问题但是一直都没有特别重视起来。以后再怀疑自己悟性不够的时候多看看大云吧,都没有花力气去深究就说是因为自己悟性不够,真是对自己蛮不负责任的。

另外我想对大云说的是有些概念实在理解不了也不要太强求,等运用到实际的项目中很多概念就不明自明了,看看我就知道了,很多基础概念都解释不清楚不也是写了这么多年的代码嘛,理论与实际相结合,我和大云互补一下就完美了,希望我们能互相学习互相进步吧。

你可能感兴趣的:(iOS 「assign 乌龙」引发的一些思考)