gpt4 book ai didi

objective-c - 从 NSThread 调用一个带有多个参数的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:29 28 4
gpt4 key购买 nike

如何从 NSThread 调用一个方法?

我可以像下面这样调用一个方法:

[regionsMapView addAnnotation:addAnnotation];

我如何在 NSThread 中调用它?我使用如下:

[NSThread detachNewThreadSelector:@selector(addAnnotation) 
toTarget:regionsMapView
withObject:addAnnotation];

但是应用程序崩溃了,日志如下:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSThread initWithTarget:selector:object:]: target does not implement selector (*** -[MKMapView addAnnotation])'
*** Call stack at first throw:
(
0 CoreFoundation 0x0182b5a9 __exceptionPreprocess + 185
1 libobjc.A.dylib 0x0197f313 objc_exception_throw + 44
2 CoreFoundation 0x017e3ef8 +[NSException raise:format:arguments:] + 136
3 CoreFoundation 0x017e3e6a +[NSException raise:format:] + 58
4 Foundation 0x0006c392 -[NSThread initWithTarget:selector:object:] + 146
5 Foundation 0x0006c2d3 +[NSThread detachNewThreadSelector:toTarget:withObject:] + 98
6 MJA 0x00008a8e -[TaetPaViewController showAddress:withItem:] + 389
7 MJA 0x00008eb9 -[TaetPaViewController UpdateInfo] + 784
8 MJA 0x0000835a -[TaetPaViewController parseTheLocalXml] + 408
9 Foundation 0x0006ccf4 -[NSThread main] + 81
10 Foundation 0x0006cc80 __NSThread__main__ + 1387
11 libSystem.B.dylib 0x911a47fd _pthread_start + 345
12 libSystem.B.dylib 0x911a4682 thread_start + 34
)
terminate called after throwing an instance of 'NSException'
Program received signal: “SIGABRT”.

最佳答案

你忘记了末尾的冒号。

@selector(addAnnotation)

不是

@selector(addAnnotation:)

第一个调用一个没有参数的方法,第二个调用一个参数。你的代码应该是这样的

[NSThread detachNewThreadSelector:@selector(addAnnotation:) 
toTarget:regionsMapView
withObject:addAnnotation];

关于objective-c - 从 NSThread 调用一个带有多个参数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6569686/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com