Objective-C中有一种方法可以在成员函数中声明一个函数绑定的ivar吗?

时间:2014-02-27 17:41:21

标签: objective-c

E.g。 'once'将是特定于实例的函数,@指令将是各种类型的初始化器吗?

-(void)mightBeCalledMoreThanOnce {
  @BOOL once = YES;

  if (once) {
    once = NO;
    NSLog(@"Hurray");
  }
}

这与来自C的静态全局或来自GCD的静态全局调度非常不同。

1 个答案:

答案 0 :(得分:1)

不,Obj-C不直接支持这种类型。对象上的实际实例变量(或属性)是您如何以惯用方式完成此类范围。

如果您真的想在没有ivar的情况下做这样的事情,请查看“associated objects”,这是一种将任意数据附加到实例的方法,您可以在该方法中执行此操作。但这相当冗长,通常仅在您无法访问类的实现时使用(即在类别中)。