如何动态添加类方法?
使用 Objective-C 运行时,如何将方法 +layerClass
添加到私有 UIGroupTableViewCellBackground
类(而不是其超类 UIView
)?注意:这仅用于测试(以查看 UITableViewStyleGrouped
如何设置单元格 backgroundView
和 selectedBackgroundView
)。
Using the Objective-C Runtime, how do I add the method +layerClass
to the private UIGroupTableViewCellBackground
class (not to its superclass, UIView
)? Note: This is only for testing (to see how UITableViewStyleGrouped
sets cell backgroundView
& selectedBackgroundView
).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要动态添加类方法而不是实例方法,请使用
object_getClass(cls)
获取元类,然后将该方法添加到元类。例如:您还可以通过将
+layerClass
方法添加到UIGroupTableViewCellBackground
类别并使用前向类定义(即@class UIGroupTableViewCellBackground)来更轻松地完成此操作
,让它编译。To dynamically add a class method, instead of an instance method, use
object_getClass(cls)
to get the meta class and then add the method to the meta class. E.g.:You might also be able to do this easier by adding the
+layerClass
method to a category ofUIGroupTableViewCellBackground
and using a forward class definition, i.e.@class UIGroupTableViewCellBackground
, to get it to compile.试试这个魔法:
Try this magic: