您的位置:首页 > 其它

PerformSelector may cause a leak because its selector is unknown

2015-01-26 10:28 393 查看
在Objective-C中需要以函数名或者函数指针来调用函数时,以回调函数为例,对象为(id)target,它的成员函数名为callback,之前习惯是这么写的:
if ([target respondsToSelector:callback]){    [target performSelector:callback withObject:nil];}


但是在ARC下会报一个warning: PerformSelector may cause a leak because its selector is unknown

在网上查,很多人说的方法都是定义宏去ignore warning之类的。总感觉很不爽。今天查到了正确的解决方法:

【解决方法】
if ([target respondsToSelector:callback]){//    [target performSelector:callback withObject:nil];    IMP imp = [target methodForSelector:callback];    void (*func)(id, SEL) = (void *)imp;    func(target, callback);}


这样就不会报warning了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Xcode
相关文章推荐