On Nov 15, 2012, at 3:17 PM, Graham Cox <graham....@bigpond.com> wrote:
> I have a formal protocol for a notification callback I want to make. The 
> protocol inherits the NSObject protocol.
> 
> The caller accepts only objects conforming to this protocol as its delegate. 
> When it's time to invoke the callback, I'd like to do so on the main thread, 
> since the caller can be running on another thread. But 
> -performSelectorOnMainThread:withObject:waitUntilDone: is not part of the 
> NSObject protocol, it's part of the methods of NSObject, so my code won't 
> compile because id<MyProtocol> objects don't include this method.
> 
> How can I invoke a method of my protocol on the main thread?
> 
> 
> @protocol MyProtocol<NSObject>
> 
> - (void)              foo:(Caller*) caller;
> 
> ...
> 
> 
> @interface Caller : NSObject
> 
> @property (assign) id<MyProtocol>     delegate;
> 
> ...
> 
> 
> 
> [self.delegate performSelectorOnMainThread:@selector(foo) withObject:self 
> waitUntilDone:NO];          // method not found

The simple solution is to declare your property as NSObject<MyProtocol>* . 


-- 
Greg Parker     gpar...@apple.com     Runtime Wrangler



_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to