Objective-C-避免编译错误?

Objective-C-避免编译错误?,objective-c,compiler-errors,compiler-warnings,Objective C,Compiler Errors,Compiler Warnings,有没有办法抑制编译错误? 在这种情况下,我无法使用协议,因为我尝试使用的类位于外部库中。我无法控制代码 if (myClass && [[myClass class] respondsToSelector:@selector(getSomething)]) { // Compile error on the line below MyResult *result = [myClass getSomething]; // Also tried MyResu

有没有办法抑制编译错误? 在这种情况下,我无法使用协议,因为我尝试使用的类位于外部库中。我无法控制代码

if (myClass && [[myClass class] respondsToSelector:@selector(getSomething)])
{
   // Compile error on the line below
   MyResult *result = [myClass getSomething];

   // Also tried
   MyResult *result = [(id)myClass getSomething];

}
编辑:
错误:选择器没有已知的类方法当您在非类型化的Objective-C对象上使用方法时,编译器会尝试根据其选择器猜测您尝试调用的方法,因为它需要根据返回值生成不同的代码。根据是否使用ARC,生成代码的方式也不同,编译器需要相应地更改

如果没有ARC,编译器将假定它不知道的任何选择器的返回类型为
id
,并将生成警告。使用ARC时,它会变成一个硬错误,因为编译器不想冒险进行内存管理


这就是为什么您至少需要告诉编译器关于该方法的一个现有声明。

本文描述了如何使用#pragma声明来避免编译器警告,如果您确定警告为假阳性(或您认为可以安全忽略的警告):

GDB和LLDB是调试器,而不是编译器。苹果支持的编译器是GCC和Clang。lldb和gdb与编译有什么关系?除此之外,还有什么错误?您遇到了什么错误?编译器不知道您尝试使用的类方法。你导入了正确的文件吗?@zneak但是这个类可以是任何东西,我想对任何响应它的类调用这个方法,在这种情况下它不是假阳性。True。我添加了一个括号来阐明我的意图
@interface SomeClass(存在但未声明此为BadCode和FeelBad的方法)在需要它的
.m
文件顶部声明@end