我有代码invokeSelector:withObject:崩溃的发行
[target invokeSelector:handler.successAction withObject:object];
它可以调用一些方法。与对象或没有。它完美的工作在调试,但崩溃在版本:
Nov 20 21:55:13 efpies project[7202] <Warning>: >>>> selector: successfulLogin
Nov 20 21:55:13 efpies project[7202] <Warning>: >>>> target: <AppDelegate: 0x1f595a90>
Nov 20 21:55:13 efpies project[7202] <Warning>: >>>> object: <7b226d65 73736167 65223a22 5c753034 31325c75 30343435 5c753034 33655c75 30343334 205c7530 3434305c 75303433 305c7530 3433375c 75303434 305c7530 3433355c 75303434 385c7530 3433355c 75303433 64227d> NSConcreteMutableData
Nov 20 21:55:13 efpies project[7202] <Error>: -[AppDelegate invokeSelector:withObject:]: unrecognized selector sent to instance 0x1f595a90
Nov 20 21:56:12 efpies project[7205] <Warning>: >>>> selector: driversUpdated:
Nov 20 21:56:12 efpies project[7205] <Warning>: >>>> target: <DriversList: 0x1cd5ffd0>
Nov 20 21:56:12 efpies project[7205] <Warning>: >>>> object: (
) __NSArrayM
Nov 20 21:56:12 efpies project[7205] <Error>: -[DriversList invokeSelector:withObject:]: unrecognized selector sent to instance 0x1cd5ffd0
这些方法是可用的(甚至在头文件中)。怎么了?该数据和对象是100%正确
使用[target performSelector:handler.successAction];这是在可可触摸中这样做的方式,因为NSObject将为您处理这个问题。检查https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html#//apple_ref/occ/intfm/NSObject/performSelector:withObject: – iDev
@ACB :我确信'handler.successAction'可能已经是一个'SEL',所以正确的调用将是'[target performSelector:handler.successAction withObject:object]'。 – Tim
@Tim,感谢您的纠正。改变了它。 – iDev