Я пытаюсь использовать - [NSObject autoContentAccessingProxy]
, как описано на http : //developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/nsobject_Class/Reference/Reference.html#//apple_ref/occ/instm/NSObject/autoContentAccessingProxy .
Объект, который я пытаюсь проксировать, реализует протокол NSDiscardableContent
и -autoContentAccessingProxy
успешно возвращает ненулевое значение.
Однако, если я пытаюсь отправить сообщение прокси, я всегда получаю NSInvalidArgumentException
с причиной «*** - [NSProxy methodSignatureForSelector:] called!».
Я понимаю, что если бы я писал свой собственный класс на основе NSProxy
, мне бы пришлось реализовать метод -methodSignatureForSelector:
, но в этом случае я не пишу прокси, просто пытаясь использовать прокси, предоставленный документированным методом. Как бы то ни было, я вижу, что прокси на самом деле имеет тип NSAutoContentAccessingProxy
, поэтому я ожидал, что этот класс действительно будет иметь реализацию для -methodSignatureForSelector:
.
Вот небольшой блок кода, использующий экземпляр NSPurgeableData вместо моего настраиваемого класса. У этого маленького блока точно такая же проблема.
NSPurgeableData * data = [NSPurgeableData dataWithBytes:"123" length:3];
NSLog(@"data.length = %u", data.length);
id proxyData = [data autoContentAccessingProxy];
NSLog(@"proxyData.length = %u", [proxyData length]); // throws NSInvalidArgumentException!
[data endContentAccess];
[data release];
Могу ли я неправильно понять метод -autoContentAccessingProxy
, или он просто полностью сломан?