在 Objective-C 中是否有办法在成员函数中声明一个函数绑定的 ivar



例如,"一次"将是特定于实例函数的,@ 指令将是某种初始值设定项?

-(void)mightBeCalledMoreThanOnce {
  @BOOL once = YES;
  if (once) {
    once = NO;
    NSLog(@"Hurray");
  }
}

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

不,Obj-C 中不直接支持这种功能。对象上的实际实例变量(或属性)是你习惯性地完成这种作用域的方式。

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

最新更新