3. 一个命名引发的崩溃
Last updated
Last updated
作者: Vong_HUST
作为开发工程师,相信大家最头疼的有时候不是需求的实现,而是一个优雅的命名,恰当的命名让人阅读起来非常顺畅。
前段时间因为命名的问题引发了一个崩溃。事情是这样的,服务端某个字段有了新的含义,为了不影响老版本,索性在原来的字段上加了个前缀。比如之前是 name
,修改之后改成了 new_name
,然后 mapping
的时候,本地 Model
直接将服务端蛇形命名规则替换为驼峰命名规则,即 newName
,嗯,一切看起来似乎很完美。然后跑起来之后,这个请求完成后,就一顿乱崩,然后比对代码也没发现什么大问题。后面发现这个属性的名字有个 new
,之前有一点印象是说 ARC
之后命名中不能带 new
,后来查阅苹果文档,才发现确实有说到这一点,如下所示,意思就是属性名不能以 new
开头,除非提供自定义的 getter
方法(前提是 getter
也不能以 new
开头)。
这个时候验证欲强的老哥已经打开 Xcode 来验证了,然后写了一下代码
根本就编译不过,这不是骗人吗?其实没有,因为我的 Model
是继承自 NSManagedObject
,然后根据 .xcdatamodeld
文件由系统自动生成的类,相信熟悉 CoreData 的同学都知道这个操作,代码如下(猜测由于 NSManagedObject
子类的属性是 @dynamic
的,所以 Xcode 不会去检测,如果自己写一个继承 NSObject
的类,即使属性是 @dynamic
也会报错,可自行测试。如果你知道具体原因,可以分享给大家,一起学习下~)
最后,希望大家都不会被命名所困扰~