Как сделать эквивалент Objective-C mutableCopy в Monotouch?

У меня есть код в Objective-C, который использует метод mutableCopy для создания изменяемой копии объекта NSURLRequest с именем request:

NSMutableURLRequest mutableRequest = [request mutableCopy];

Как мне сделать это в Monotouch?

Я попытался поместить этот код в dll привязки монотонного касания Objective-C, но когда я вызываю функцию, в которой есть этот код, я получаю жесткий сбой в симуляторе, и ide monodevelop самопроизвольно выгружается из памяти. Предположительно, сбой связан с попыткой перенаправить недавно скопированный mutableRequest обратно в monotouch.

Любые советы высоко ценится.


person Christopher Disdero    schedule 05.05.2011    source источник


Ответы (2)


как насчет отправки селектора для mutableCopy в объект запроса, это отправит IntPtr обратно в Monotouch, а затем MonoTouch.ObjCRuntime.Runtime.GetNSObject из этого IntPtr и приведет его к классу NSUrlMutableURLRequest (который реализован в Monotouch)?

person Pavel Sich    schedule 09.05.2011
comment
Отличная идея! Я не знал о члене GetNSObject(). Для тех, у кого может возникнуть такой же вопрос, вот код, реализующий предложение Павла: Selector selector = new Selector (mutableCopy); IntPtr p = Messaging.IntPtr_objc_msgSend(request.Handle, selector.Handle); NSMutableUrlRequest mutableRequest = (NSMutableUrlRequest)(Runtime.GetNSObject(p)); вернуть изменяемый запрос; - person Christopher Disdero; 10.05.2011

Xamarin.iOS 7.0.6 теперь включает типизированная поддержка для NSCopying и NSMutableCopying.

Типы, соответствующие этим протоколам, теперь экспортируют методы Copy(NSZone) или MutableCopy(NSZone).

person poupou    schedule 02.02.2014