我为方法调整UITextField
创建了一个类别,它的名称类似于UITextField+MaxLength
,我实现了+load
方法来进行调整,但我没有在前缀标题或其他方法中导入它文件,只需将其导入SomeViewController
。
我认为调整只应在SomeViewController
中运行,但为什么每个UITextField
甚至UISearchBar
都会调用混合方法?并且在运行应用程序时调用+load
方法?
我想我需要指出为什么我使用swizzled,因为我想使用KVO来观察更改的文本,所以我调整setText
并关联名为{{1}的属性NSNumber
所以,如果我不使用KVO,我可以删除这个类别的混合部分,我可以将子字符串剪切到特定的最大长度。
答案 0 :(得分:2)
在运行时发生混乱;如果你执行一个混合,它真正改变了该类方法的实现。就像您将代码更改为UITextField
一样。
这就是为什么方法调整是如此罕见和危险的事情。如果您只想更改UITextField
,子类的特定实例(或者从您的类别标题中猜测您的意图,请使用代理)。