记一个低级的错误

现象

一个简单的App,在测试机iPhone6S上正常运行,准备打包了。临时发现需要iPhone5尺寸的应用截图,就开了iPhone5的模拟器,准备运行应用来截图。
结果发生了崩溃,一看崩溃堆栈,是访问Model的某个属性的时候崩溃了,报了访问错误地址的异常。当时觉得很奇怪,以为是获取回来的网络数据出错了,核对了一下,发现没问题。
再仔细看了下崩溃时的Model,除了有两个属性不正常之外,其他的属性值和类型都是正确的。下意识以为是那里内存写溢出了,把这个Model给破坏了,就review了下代码,发现没啥问题。
再回过头来细思一下,如果内存被覆写了,那Model不应该就那两个属性有问题,而其他正常。翻看了下Model的定义,结果就发现问题所在了。
出问题的那两个属性是NSString *类型的,但是错误地使用了assign修饰,导致问题的产生,修改成正确的copy修饰之后,一切正常了。

总结

这个问题的产生是因为最初先根据网络接口文档定义好了Model,出问题的两个属性在文档里说明是int类型的,只是调试的时候才发现文档不正确,实际传过来的是字符串。所以就把两个属性的类型改成了NSString *,但是忘记把修饰的assign改成copy了。一个粗心大意导致了这么个问题的出现。

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

推荐阅读更多精彩内容

  • 新建一个SQLiteDemo项目: 我们希望创建一个名为BookStore.db的数据库, 然后在数据库中新建一张...
    史慧君阅读 7,599评论 2 53
  • 锦囊分享,我的前十天的冒险与收获:通过面对面感招,使我的与人交流体验了“飞"一样的爽,告别了往日的尴尬,没有话...
    真心爱礼阅读 102评论 2 0
  • 文|珞寂朵 写一纸书信,给你 小楷,蓝黑的墨水 摘一片银杏,送你 黄色,秋天的味道 日复一日,等你的回信 焦急,不...
    珞寂朵阅读 258评论 29 25