我将 MyClass 类定义为 UITableViewHeaderFooterView 的子类。在 iOS 6 类 UITableViewHeaderFooterView 存在,一切正常。在 iOS 5 类 UITableViewHeaderFooterView 不存在,并且 MyClass 没有在运行时注册。
在文件 'objc-runtime.m' 的评论中说: * 一个类在第一次出现在图像中时被认为是“未连接的”。* 它存储在unconnected_class_hash
. 如果所有类的 * 超类都存在并且已经“连接”,那么新类 * 可以连接到它的超类并移动到class_hash
* 正常使用。否则,类在unconnected_class_hash
* 中等待,直到超类完成连接。
但是,当我将 UITableViewHeaderFooterView 类动态创建为子类 UITableHeaderFooterView 时,MyClass 未连接(+未调用加载),并且出现错误:Interface Builder 文件中的未知类 MyClass。 *由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[setValue:forUndefinedKey:]:此类与键 arrowImageView 的键值编码不兼容。”
如果我使用 UIView 作为 MyClass 的超类,我会收到错误: *由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“为标识符 (MyClass) 注册的 nib 无效 - nib 必须包含一个必须是 UITableViewHeaderFooterView 实例的顶级对象'
我看到了 PSTCollectionView 的实现(在 PSTRegisterClass 函数中使用 class_setSuperclass 函数),但我不明白这个解决方案。
在尝试注册 MyClass 之前如何动态创建 UITableViewHeaderFooterView?或者无论如何我该如何解决这个问题?