js_*_*js_ 13 iphone objective-c ios
例如,我进行了子类化UILabel并添加了一个方法或属性,-verticalTextAlignment用于垂直对齐文本.
并且在将来,如果下一版本的SDK或iOS添加了具有相同名称的方法或属性,则可能是我的应用程序崩溃或意外行为.
*即使您使用类别而不是子类化,也会出现此问题.
问题1
 
如何避免Objective-C中的这种意外覆盖?
我认为你可以通过为你的所有方法和属性添加前缀来避免这种情况-XXX_verticalTextAlignment.但这不现实,不是吗?
问题2
 
我知道这种意外压倒一切的发生在编译时,或当你更新iOS SDK,OSX SDK或XCode中.
但是在更新iPhone的iOS版本时是否也可能发生?
例如,您的应用程序是否可能在iOS5上运行良好但由于iOS6中的意外覆盖而无法在iOS6上运行.(您可以将iOS5和iOS6替换为任何版本,例如iOS5.0和iOS5.1)
是的,你可以使用自己的前缀,但这并不常见.
是的,它可能在O/S更新后发生; Objective-C是一种非常动态的语言,其中消息被发送到方法而不是被调用,就像在其他语言中一样.这些东西是在运行时解决的,而不是编译时.
底线是,是的,你可能会意外地覆盖未来的基类的方法和唯一的解决办法是在那里当它发生,并重新命名方法.
| 归档时间: | 
 | 
| 查看次数: | 849 次 | 
| 最近记录: |