gpt4 book ai didi

ios - objective-c 中的方法在任何地方都有效

转载 作者:行者123 更新时间:2023-11-28 21:22:45 26 4
gpt4 key购买 nike

我创建了一个方法 swizzled UITextField 的类别,它的名字像 UITextField+MaxLength,我实现了 +load 方法来做 swizzled,但我没有在前缀头文件或其他文件中导入它,只是在 SomeViewController 中导入它。

我认为 swizzled 应该只在 SomeViewController 中工作,但为什么在每个 UITextField 甚至 UISearchBar 中调用 swizzled 方法?当我运行应用程序时调用 +load 方法?

编辑

我想我需要指出为什么我使用 swizzled,因为我想使用 KVO 来观察文本的变化,所以我调整了 setText 并关联了一个属性 NSNumber 命名为 displayLength,所以,如果我不使用 KVO,我可以删除这个类别的混合部分,我可以将子字符串剪切到特定的最大长度。

最佳答案

Swizzling 发生在运行时;如果您执行调配,它会真正改变该类方法的实现。就像您将代码更改为 UITextField 一样。

这就是为什么方法调配是如此罕见和危险的事情。如果您只想更改 UITextField 的特定实例,子类化(或者,从您的类别标题猜测您的意图,使用委托(delegate))。

关于ios - objective-c 中的方法在任何地方都有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39274882/

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