Thank you for the explanation. I only started learning Objective-C, Cocoa, iOS, 
etc in August, so I'm still pretty much a newbie and appreciate learning 
something new.

In this particular case, the selector that is the argument to the 
performSelector: method is a callback selector for NSTimer and hence is known 
to return void. Therefore, using the #pragma to turn off this message is safe.

Thanks for the insight.

Rick Aurbach
Aurbach & Associates, Inc.

On Jan 21, 2013, at 2:45 PM, Greg Parker <gpar...@apple.com> wrote:

> On Jan 21, 2013, at 12:20 PM, Rick Aurbach <r...@aurbach.com> wrote:
>> It appears to work great, but I find that the class's executeSelector: 
>> method generates a warning message.
>> 
>>> - (void) executeSelector:(NSTimer*)timer {
>>>  if(self.target != nil) {
>>>      if([self.target respondsToSelector:self.sel]) 
>>>          [self.target performSelector:self.sel withObject:self];
>>>  }
>>>  else
>>>      [self invalidate];
>>> }
>> 
>> where sel is defined as @property(nonatomic) SEL sel;
>> 
>> The line containing the performSelector:withObject: method generates
>> "PerformSelector may cause a leak because its selector is unknown".
>> 
>> Ok, I agree that the selector is unknown, but we know from the previous line 
>> that the target responds to it.
> 
> That's not what it's complaining about. It's complaining because the ARC 
> compiler cannot see the name of the method you are calling, so ARC doesn't 
> know whether its return value needs to be released. 
> 
> 
>> So I'd like to prevent this particular warning. I'm sure I ought to know how 
>> do do this, but how do I go about removing this warning message? Ideally, 
>> I'd like to do this on a file (or occurrence) basis, so that I can make sure 
>> that other similar usages are similarly safe.
> 
> If you know the selectors you are calling do not return a retained object, 
> you can use #pragma clang diagnostic to disable warning 
> -Warc-performSelector-leaks around that line.
> 
> 
> -- 
> 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