Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c invokeSelector:withObject:在版本中崩溃_Objective C_Ios - Fatal编程技术网

Objective c invokeSelector:withObject:在版本中崩溃

Objective c invokeSelector:withObject:在版本中崩溃,objective-c,ios,Objective C,Ios,我有密码 [target invokeSelector:handler.successAction with object:object]; 它可能会调用一些方法。不管有无目标。它在调试时工作正常,但在发布时崩溃: Nov 20 21:55:13 efpies project[7202] <Warning>: >>>> selector: successfulLogin Nov 20 21:55:13 efpies project[7202] <War

我有密码

[target invokeSelector:handler.successAction with object: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
11月20日21:55:13 efpies项目[7202]:>>>>选择器:成功登录
11月20日21:55:13 efpies项目[7202]:>>>>目标:
11月20日21:55:13 efpies项目[7202]:>>>>>对象:NSConcreteTableData
11月20日21:55:13 efpies项目[7202]:-[AppDelegate invokeSelector:withObject:]:发送到实例0x1f595a90的选择器无法识别
11月20日21:56:12 efpies项目[7205]:>>>>选择器:驱动器更新:
11月20日21:56:12 efpies项目[7205]:>>>>目标:
11月20日21:56:12 efpies项目[7205]:>>>>对象:(
)_uunsarraym
11月20日21:56:12 efpies项目[7205]:-[DriversList invokeSelector:withObject:]:发送到实例0x1cd5ffd0的选择器无法识别
这些方法是可用的(甚至可以在头文件中显示)。发生了什么?数据和对象100%正确

使用

[target performSelector:handler.successAction withObject:object]; 
这是在cocoa touch中执行此操作的方法,因为
NSObject
将为您处理此操作。
查看更多详细信息。

事实证明,
调用选择器:withObject:
是静态库中的一个类别方法。静态库中的类别不会自动加载,因此您应该编写

-force\u load$(BUILD\u ROOT)/$(CONFIGURATION)$(EFFECTIVE\u PLATFORM\u NAME)/lib\u NAME.a


如果编译为目标的依赖项,则指向目标的
生成设置中的
其他链接器标志
字段。

使用[target performSelector:handler.successAction];这是在cocoa touch中执行此操作的方法,因为NSObject将为您处理此操作。检查:@ACB:我非常确定
handler.successAction
可能已经是
SEL
,因此正确的调用应该是
[target performSelector:handler.successAction withObject:object]
@Tim,谢谢您的更正。更改了它。@efpies:Where是
-invokeSelector:withObject:
定义的?我没有在NSObject上看到它;通常,想要做您正在做的事情的人将使用类似名称的方法
-performSelector:withObject:
。但是,当NSObject协议已经提供了performSelector时,为什么要使用此分类方法呢?它有什么帮助?@ACB
performSelector
可以对可能的泄漏发出警告。例如,您为类型为
id
的对象调用
performSelector
。因为编译器不知道是否有这样的选择器(编译时类型未知)。为了让它闭嘴,而不是在每个地方都写
pragma
s,包装器已经编写好了。它只是用
#pragma-clang-diagnostic-push
-
#pragma-clang-diagnostic-pop
包装
performSelector
,并且里面有一条指令:
#pragma-clang-diagnostic-ignored“-Warc-performSelector-leaks”
。但现在我们应该确保在随机对象中调用适当的选择器。