将上下文添加到UI控件或NSObject

Dav*_*ins 4 objective-c uibutton nsobject ios

这是伟大的,能够addTarget上一个UIButton.我只希望有一些偷偷摸摸的方式我可以将状态附加到UIButton,以便在调用目标方法时,我可以神奇地从发送方中提取该状态(任何id).

就像是:

[button shoveMyObjectInThere:foo];
[button addTarget:self action:@selector(touchyTouchy:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

其次是:

-(void) touchyTouchy:(id) sender {
    UIButton button = (UIButton*)sender;
    id foo = [button getByObjectBack];
    // do something interesting with foo
}
Run Code Online (Sandbox Code Playgroud)

如果UIButton有一个'id context'属性,开发人员可以推送东西,那就太好了,但事实并非如此.Objective-C是一种非常动态的语言,所以我想知道是否有一些偷偷摸摸的方式我可以在运行时向对象添加方法或字段?

Ric*_*ich 5

您可以尝试制作关联参考

#import <objc/runtime.h>

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