【发布时间】:2023-03-19 16:36:01
【问题描述】:
我正在研究向所有 UIView 实例添加属性(在本例中为整数)的方法,无论它们是否是子类。在一个类别中使用 objc_setAssociatedObject() 和 objc_getAssociatedObject() 是否是 Apple 认可的适当方式?
我听说有人担心这会构成“运行时破解”,并可能导致难以追踪和调试的问题。有没有其他人见过这种类型的问题?有没有更好的方法来为所有 UIView 实例添加一个整数属性而不进行子类化?
更新:我不能只使用tag,因为这需要在已经将tag 用于其他用途的代码库中使用。相信我,如果我可以为此使用tag,我会的!
【问题讨论】:
-
回复有点晚,但它可能对其他不想深入并创建类别和新 customTag 的人有用。您可以通过将多个数字分配到特定数字来将多个数字存储在同一个标签中,例如分配
view.tag = (view.tag * 100) + myNumber;并将其取回myNumber = view.tag % 100以获取原始标签,请使用originalTag = view.tag / 100 -
好主意。根据您的操作,您还可以使用
NS_OPTIONS并创建位掩码。
标签: ios objective-c objective-c-runtime