【问题标题】:How do do the equivalent of the objective-C mutableCopy in Monotouch?Monotouch中的objective-C mutableCopy 怎么做?
【发布时间】:2011-05-05 21:00:13
【问题描述】:

我在 Objective-C 中有一些代码,它使用“mutableCopy”方法制作名为“request”的 NSURLRequest 对象的可变副本:

NSMutableURLRequest mutableRequest = [request mutableCopy];

如何在 Monotouch 中执行此操作?

我尝试将此代码放入一个 Objective-C monotouch 绑定 dll,但是当我调用其中包含此代码的函数时,我在模拟器中遇到了严重崩溃,并且 monodevelop ide 会自发地从内存中卸载自己。崩溃可能与试图将新复制的 mutableRequest 编组回单触有关。

非常感谢任何建议。

【问题讨论】:

    标签: ios xamarin.ios nsurlrequest nsmutableurlrequest


    【解决方案1】:

    如何将 mutableCopy 的选择器发送到请求对象,这会将 IntPtr 发送回 Monotouch,然后从该 IntPtr 发送 MonoTouch.ObjCRuntime.Runtime.GetNSObject 并将其转换为 NSUrlMutableURLRequest 类(在 Monotouch 中实现)?

    【讨论】:

    • 好主意!我不知道 GetNSObject() 成员。为了其他可能有相同问题的人的利益,这里是实现 Pavel 建议的代码: Selector selector = new Selector ("mutableCopy"); IntPtr p = Messaging.IntPtr_objc_msgSend(request.Handle, selector.Handle); NSMutableUrlRequest mutableRequest = (NSMutableUrlRequest)(Runtime.GetNSObject(p));返回可变请求;
    【解决方案2】:

    Xamarin.iOS 7.0.6 现在包括对 NSCopyingNSMutableCopying 的类型化支持。

    符合这些协议的类型现在导出 Copy(NSZone)MutableCopy(NSZone) 方法。

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-08
      • 1970-01-01
      • 2011-06-05
      • 2016-01-28
      • 1970-01-01
      相关资源
      最近更新 更多