2009-05-27 84 views
4

第一次发布所以请温和。引用当前对象中的方法

如何引用Objective-C中当前对象的方法?有没有像Java这样的这个关键字?

下面是一些假的代码,以澄清:

@implementation FooBard 
- (void) foo { 
    i = 1 
    m = [this bar: i]; 
} 

- (int) bar: int j { 
    k = j - 1; 
    return (k); 
} 
@end 

在Java中,我只想做this.bar(),并用它做。

谢谢你的时间。

比尔

回答

4
m = [self bar:i]; 
+0

工作。谢谢。 – bkoch 2009-05-27 20:18:47

+0

短而甜,因为它;-) – Abizern 2009-05-27 21:05:02

2

所有Objective-C的方法获得所谓的self一个隐含的参数是id类型的堆栈变量指向当前实例。实际上,如果前两个参数是idSEL(见下文),任何C函数都可以用作Objective-C方法。

self不是Objective-C中的保留关键字,例如Java中的this。例如,您可以在该方法内重新分配self。这是init方法的标准模式:

-(id)init { 
    if((self = [super init])) { 
    // do initialization here 
    } 

    return self; 
} 

但重新分配self在任何其他情况下很少使用。

在您提供的示例中,您可以使用self类似id类型的其他变量:[self bar:i]

为了完整,所有Objective-C方法也获得一个名为_cmd的隐含参数,它也是被调用方法的选择器(类型SEL)。有关更多信息,请参阅Objetive-C Runtime Reference

相关问题