Featured post
iphone - Compiler gives warning on performSelectorOnMainThread:@selector(delegateMethod) -
i have nsoperation wraps web service functionality. nsoperation has delegate messaged when operation over.
as nsoperation lives on different thread have make call this:
[delegate performselectoronmainthread:@selector(getdealersidsuccess:) withobject:result waituntildone:yes];
it works fine, gives me warning:
warning: '-performselectoronmainthread:withobject:waituntildone:' not found in protocol(s)
i agree compiler on one, sees delegate, checks protocol, finds no declaration of performselector method.
my question is: can remove warning making call in different manner?
my 2 guesses (1) write method called
- (void) calldelegatemethodonmainthred { [delegate getdealersidsuccess:result] }
and call through performselectoronmainthread, find solution cumbersome , extra, hard read, step on top of delegation.
the second solution cast delegate type of parent object inside selector, plain crazy , goes against delegate encapsulation pattern.
i appreciate third solution better understanding of language:)
thank in advance.
edit: added delegate declaration:
id <isdealersiddelegate> delegate;
i declare delegate id. delegate self extends uiviewcontroller.
i see declaring nsobject work.
performselectoronmainthread:withobject:waituntildone:
method declared in nsobject
class. if delegate object inherits nsobject can declare as
nsobject<mydelegateprotocol> *delegate;
so compiler know delegate responds nsobject's methods , won't issue warning.
- Get link
- X
- Other Apps
Comments
Post a Comment