【发布时间】:2012-08-21 06:57:12
【问题描述】:
例如,我继承了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)
【问题讨论】:
-
您也可以有条件地加载该方法 - 请参阅我的答案。顺便说一句,+1 提出一个好问题。
标签: iphone objective-c ios