打电话和打电话[myObject performSelector:@selector(something) withObject:nil];
一样[myObject performSelector:@selector(something)];
吗?
2141 次
1 回答
5
唯一的区别是您打算从@selector
. performSelector
当方法不接受参数时使用,如果performSelector:withObject
方法接受一个类型的参数时使用id
。否则,他们都做完全相同的事情。
讨论
此方法与 performSelector 相同:除了可以为 aSelector 提供参数。aSelector 应该标识一个采用 id 类型的单个参数的方法。对于具有其他参数类型和返回值的方法,请使用 NSInvocation。
正如 Chuck 指出的那样,这并没有真正强制执行(至少目前不是)。下面的代码执行得很好,没有向我抛出任何异常。
-(void)viewDidLoad
{
[super viewDidLoad];
[self performSelector:@selector(foo) withObject:nil];
}
-(void)foo
{
NSLog(@"foo!");
}
另一方面,这个版本的代码确实引起了问题。所以这不是双向的。
-(void)viewDidLoad
{
[super viewDidLoad];
[self performSelector:@selector(foo)];
}
-(void)foo:(id)myParameter
{
NSLog(@"foo!");
}
于 2011-12-15T01:45:58.473 回答