E.g。 'once'将是特定于实例的函数,@指令将是各种类型的初始化器吗?
-(void)mightBeCalledMoreThanOnce {
@BOOL once = YES;
if (once) {
once = NO;
NSLog(@"Hurray");
}
}
这与来自C的静态全局或来自GCD的静态全局调度非常不同。
答案 0 :(得分:1)
不,Obj-C不直接支持这种类型。对象上的实际实例变量(或属性)是您如何以惯用方式完成此类范围。
如果您真的想在没有ivar的情况下做这样的事情,请查看“associated objects”,这是一种将任意数据附加到实例的方法,您可以在该方法中执行此操作。但这相当冗长,通常仅在您无法访问类的实现时使用(即在类别中)。