相关疑难解决方法(0)

performSelector可能导致泄漏,因为其选择器未知

ARC编译器收到以下警告:

"performSelector may cause a leak because its selector is unknown".
Run Code Online (Sandbox Code Playgroud)

这是我正在做的事情:

[_controller performSelector:NSSelectorFromString(@"someMethod")];
Run Code Online (Sandbox Code Playgroud)

为什么我会收到此警告?我理解编译器无法检查选择器是否存在,但为什么会导致泄漏?我怎样才能更改我的代码,以便我不再收到此警告?

memory-leaks objective-c ios automatic-ref-counting

1251
推荐指数
15
解决办法
18万
查看次数

我应该修复Xcode 5'语义问题:未声明的选择器'吗?

我正在尝试使用Xcode5升级我的应用程序,但在第三方库(MagicalRecord)中遇到了许多"语义问题"."修复"这个的最快方法可能是使用:

#pragma GCC diagnostic ignored "-Wundeclared-selector"
Run Code Online (Sandbox Code Playgroud)

(来自:如何摆脱'未声明的选择器'警告)

编译器指令,但我的直觉说这不是这样做的合适方式.带有上述错误的小代码示例:

+ (NSEntityDescription *) MR_entityDescriptionInContext:(NSManagedObjectContext *)context {

    if ([self respondsToSelector:@selector(entityInManagedObjectContext:)]) 
    {
        NSEntityDescription *entity = [self performSelector:@selector(entityInManagedObjectContext:) withObject:context];
        return entity;
    }
    else
    {
        NSString *entityName = [self MR_entityName];
        return [NSEntityDescription entityForName:entityName inManagedObjectContext:context];
    }
}
Run Code Online (Sandbox Code Playgroud)

其中entityInManagedObjectContext:没有定义方法的地方.

有关如何最好地解决这些类型的错误的任何建议,提前谢谢?!

selector ios xcode5 semantics

31
推荐指数
4
解决办法
2万
查看次数

在Xcode 5中禁止"未声明的选择器"警告

我有一个父视图控制器和一个子视图控制器.在子视图控制器的视图中,我有一个名为"startButton"的UIButton.到那个按钮,我添加了一个目标,如下所示

[startButton addTarget:[self parentViewController] action:@selector(test:) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

我在父控制器中实现了test:方法,这对我来说非常好.当点击按钮时,事件从子视图控制器传递到父视图控制器,并且test:method中的代码片段被执行.

但我的问题是,我收到一条警告信息"Undeclared selector test:".我知道,我得到它因为test:没有在子视图控制器实现文件中实现.

有没有办法单独抑制这个警告?我在这里看到的大多数建议都会使整个警告被抑制,但我想单独抑制上面提到的警告.

谢谢

suppress-warnings ios xcode5

14
推荐指数
2
解决办法
7411
查看次数