例如,"一次"将是特定于实例函数的,@ 指令将是某种初始值设定项?
-(void)mightBeCalledMoreThanOnce {
@BOOL once = YES;
if (once) {
once = NO;
NSLog(@"Hurray");
}
}
这与来自 C 的静态全局调度或来自 GCD 的静态全局调度非常不同。
不,Obj-C 中不直接支持这种功能。对象上的实际实例变量(或属性)是你习惯性地完成这种作用域的方式。
如果您真的想在没有 ivar 的情况下执行此类操作,请查看"关联对象",这是一种将任意数据附加到实例的方法,您可以在该方法中执行此操作。但这相当冗长,通常仅在您无法访问类的实现(即在类别中)时才使用。