如何在 Obj-C 运行时将结构与对象关联

Eli*_*bel 1 runtime objective-c ios

如何使用objc_setAssociatedObject与对象关联?

OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy)
Run Code Online (Sandbox Code Playgroud)

ken*_*ytm 5

必须value是 Objective-C 对象。您需要将该结构包装在 Objective-C 类中。您可以使用NSValue来实现此目的。

StructType s = ...;
NSValue* value = [NSValue valueWithBytes:&s objCType:@encode(StructType)];
objc_setAssociatedObject(obj, SPECIAL_KEY, value, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

...

NSValue* value = objc_getAssociatedObject(obj, SPECIAL_KEY);
StructType s;
[value getValue:&s];
Run Code Online (Sandbox Code Playgroud)