2012-04-17 74 views
2

与ARC一起如何优雅地解决此问题?“PerformSelector命名保留该对象的选择器”错误和ARC

问题是与WSDL2OBJC创建的代码..我修复了所有其他问题,但是这一次我摸不透..

if ([super respondsToSelector:@selector(initWithCoder:)] && ![self isKindOfClass:[super class]]) { 
    self = [super performSelector:@selector(initWithCoder:) withObject:decoder]; 
} else { 
    self = [super init]; 
} 

在WSDL2OBJC他们在这里解决了这个问题是这样的:

“在目标 - >构建Phases->编译源代码 对于所有wsdl2objc来源地址:-fno-obcj弧”

但是这实际上不是在代码修复。只有防止ARC上wSDL2OBJC来源..

回答

0

我决定放弃ARC上WSDL2OBJC和使用编译器标志

0

如果你知道超类,你不能简单地放下这个混乱并直接调用适当的初始化器吗?

+0

好动态提供超类,所以没有可能的解决方案有.. – Plato 2012-05-22 13:18:22

2

尝试此解决方案:

self = [super performSelector:NSSelectorFromString(@"initWithCoder:") withObject:aDecoder]; 
+0

它确实帮助!谢啦! – 2017-11-25 16:17:40