使用我当前的iOS 5应用程序在iOS 6上测试时,我遇到了一些错误。
对于内部使用块的无害方法,我们遇到了方法返回的锁定,但不是作为属性。问题是调用方法是有效的,方法中的每一行代码都是有效的(包括使用代码的块)
我在调用块之前尝试使用[块复制],但绝对没有变化。
答案 0 :(得分:20)
结果证明我的代码的函数定义是在内部接口中声明的,并且没有返回类型。
以下是一些用于说明此问题的图形。
初始错误
Stack Track
问题中的方法(与自我隔离以确定问题的确切位置)
功能实现(这是所谓的,并返回)
私有接口中的定义
我决定查看函数调用,并注意到它返回(id)而不是void
最后,唯一的代码更改缓解了这个错误。
<强>解释强>
当我的客户打电话给我说我们的应用程序无法在ios 6上运行时,这个bug出现了丑陋的脑袋
我被迫下载iOS 6和Xcode 4.5进行测试。
每次运行应用程序时我确实崩溃了。
在追踪谷歌链接的其他网站上的堆栈溢出问题后,我尝试了其他一些人遇到的阻止问题。并尽可能地复制副本,以减轻保留对象从堆栈中掉落的问题。
我没有使用块属性,所以我只是在块本身上调用了副本。
这没有帮助。
最后,另一位开发人员和我一起讨论它。我正在退后一步,从另一个角度看待它,并决定试图确定保留了什么。
事实证明该功能的结果得以保留。我想出来的唯一方法是查看自动完成显示我作为返回类型的值。
我知道返回类型是无效的,但它告诉我返回类型是id,这是引发对方法定义的调查的原因。
我希望这可以帮助其他有这个问题的人,因为我花了大约2个小时追捕它,结果发现这是一个永远不存在的结果类型之间的语义问题。