代码:[NSClassFromString(@"Test") gotoTest];
使用带错误的ARC:No known class method for selector 'gotoTest'
但在MRC警告中没有错误。
来自警告的方式ARC成为错误?你有什么参考吗?我想知道根本原因。
答案 0 :(得分:0)
您未在MRC下包含警告:
未找到类方法'+ gotoTest'(返回类型默认为'id')
这包含一个重要线索 - 编译器正在寻找返回类型。在MRC下,它假定为id
,并允许您将结果指定为对象引用。如果你陷入困境并且返回类型是float
,那么事情可能会出错。
在ARC下,编译器的工作是对任何返回值进行内存管理,要正确执行此操作,需要使用该类型。因此,如果它无法确定返回类型,则会产生错误。
您的代码片段表明您知道选择器不带参数并且不返回任何值,因此请将其声明为此类。如果您没有使用该方法的课程,则可以使用协议,例如:
@protocol GotoTest
+ (void) gotoTest;
@end
会做的。现在编译器知道类型,你的代码将在ARC下编译。
HTH