Xamarin.ios 如何在monotouch中使用objc_setAssociatedObject

Xamarin.ios 如何在monotouch中使用objc_setAssociatedObject,xamarin.ios,Xamarin.ios,我想使用objc_setAssociatedObject等现有机制将数据与UIView关联。在什么地方有使用它的例子吗 在Objective中,我找到了以下链接: 但是在monotouch中,什么都不做。您需要创建一个对objc_setAssociated对象的p/Invoke: enum AssociationPolicy { ASSIGN = 0, RETAIN_NONATOMIC = 1, COPY_NONATOMIC = 3, RETAIN = 01401

我想使用objc_setAssociatedObject等现有机制将数据与UIView关联。在什么地方有使用它的例子吗

在Objective中,我找到了以下链接:


但是在monotouch中,什么都不做。

您需要创建一个对objc_setAssociated对象的p/Invoke:

enum AssociationPolicy {
    ASSIGN = 0,
    RETAIN_NONATOMIC = 1,
    COPY_NONATOMIC = 3,
    RETAIN = 01401,
    COPY = 01403,
}

[DllImport ("/usr/lib/libobjc.dylib")]
static extern void objc_setAssociatedObject (IntPtr object, IntPtr key, IntPtr value, AssociationPolicy policy)
然后你会这样使用它:

var str = new NSString ("object");
var key = new NSObject ();
var value = new NSString ("value");

objc_setAssociatedObject (str.Handle, key.Handle, value.Handle, AssociationPolicy.RETAIN);
现在,对象
str
将有一个关联的字符串“value”

要恢复该值,请执行以下操作:

[DllImport ("/usr/lib/libobjc.dylib")]
static extern IntPtr objc_getAssociatedObject (IntPtr object, IntPtr key)

var valueptr = objc_getAssociatedObject (str.Handle, key.Handle);
var value = MonoTouch.ObjCRuntime.Runtime.GetNSObject (valueptr);

那么如何获得值呢?如何使用较新的Xamarin.iOS实现GetNSObject()。@shane,只需删除
MonoTouch。
ObjCRuntime.Runtime.GetNSObject(…)
@RolfBjarneKvinge伙计们,你们有关于这个的代码片段吗?这会有很大帮助。谢谢。哦,就这些吗