gpt4 book ai didi

iphone - 如何避免在 Objective-C 中意外覆盖方法或属性

转载 作者:技术小花猫 更新时间:2023-10-29 10:26:38 24 4
gpt4 key购买 nike

例如,我继承了 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. 是的,您可以使用自己的前缀,但这并不常见。

  2. 是的,它可能发生在操作系统更新之后; Objective-C 是一种非常动态的语言,消息被发送到方法而不是被调用,就像在其他语言中一样。这些事情是在运行时解决的,而不是编译时。

底线是肯定的,您可能会不小心覆盖 future 的基类方法,唯一的解决方案是在它发生时出现并重命名该方法。

关于iphone - 如何避免在 Objective-C 中意外覆盖方法或属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12049763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com