Xamarin.ios 如何在monotouch中使用objc_setAssociatedObject
我想使用objc_setAssociatedObject等现有机制将数据与UIView关联。在什么地方有使用它的例子吗 在Objective中,我找到了以下链接: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
但是在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伙计们,你们有关于这个的代码片段吗?这会有很大帮助。谢谢。哦,就这些吗