如何通过选择器传递变量?

She*_*lam 1 iphone multithreading cocoa-touch objective-c

我有一个方法

-(void)myMethod:(MyObject*)obj
Run Code Online (Sandbox Code Playgroud)

我正在分离一个新的主题

[NSThread detachNewThreadSelector:@selector(myMethod) toTarget:self withObject:nil];
Run Code Online (Sandbox Code Playgroud)

如何通过@selector(myMethod)传递MyObject*?

Gia*_*iao 5

[NSThread detachNewThreadSelector:@selector(myMethod:) toTarget:self withObject:myObjectInstance];
Run Code Online (Sandbox Code Playgroud)

你肯定会想要@selector(myMethod:)而不是@selector(myMethod).他们的意思不同.

  • 更明确地,选择器是您要发送的消息的*name*.`:`是方法名称的一部分,因此是选择器的一部分.你可以有一个名为`myMethod`的方法和一个名为`myMethod:`的方法并没有混淆 - 它们与编译器的相似之处并不比`kill`和`skill`.实际上,在Smalltalk(Obj-C所基于的)中,这就是通常编写getter和setter的方式. (2认同)