2011-07-04 27 views
3

NSThreadから1つのメソッドを呼び出すにはどうすればよいですか?NSThreadの複数のパラメータを持つ1つのメソッドを呼び出す

私は以下のような1つのメソッドを呼び出すことができます。

[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”. 

答えて

3

あなたが最後にコロンを忘れてしまいました。

@selector(addAnnotation) 

はない

@selector(addAnnotation:) 

最初にパラメータを取らないメソッドを呼び出して、第一のパラメータを取ります。 コードはこちら

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

ありがとうございました。 メソッドに複数のパラメータがある場合はどうなりますか? – itsazzad

+0

アプリがクラッシュします。 1つのパラメータを取り、戻り値を持たないメソッドしか使用できません。 – Pierre

+0

優れています。私のために働いた。 – justinkoh

関連する問題