我正在尝试为我的游戏的关卡类提供一个相当动态的api ...基本上,我只有一堆类方法optionsForLevel1,optionsForLevel2,...等,它们都返回一个字典对象,类似于水平应该有多少时间,多少奖励积分,等级的名称等......
在我的实际游戏对象中,当需要提升关卡时,它会在关卡对象上调用一个方法:
+(NSDictionary*)performClassSelectorForLevel:(int)identifier {
SEL sel = NSSelectorFromString([NSString stringWithFormat:@"optionsForLevel%d", identifier]);
return [self performSelector:sel];
}
这给了我一个警告:PerformSelector可能会导致泄漏,因为它的选择器是未知的。
...
如何解决此警告?
答案 0 :(得分:3)
这很有趣。你不能。不是我的经验。只是这是一个警告,而不是错误,这“可能”导致泄漏。
当使用performSelector:
时,你有责任确保它不会泄漏,当然编译器不知道NSString
中的选择器,它在编译时是未知的,因为它会有它在运行时分配的值。
您可以取消此警告,但可以忽略
查看此答案以获取更多详细信息:PerformSelector warning
答案 1 :(得分:0)
警告是由编译器生成的,因为ARC需要知道该方法可能返回哪种对象,以确保不会对内存进行错误管理。
此处的更多详细信息:performSelector may cause a leak because its selector is unknown。