如果我有这个方法:
-(void) methodName
{
action1;
action2;
[self methodName];
}
Run Code Online (Sandbox Code Playgroud)
我希望[self methodName]调用只进行一次,因此连续两次调用的方法.可以这样做吗?不确定我应该在哪些文档中查找.
每当调用方法'methodName'时,当action1和action2完成时,它应该再次调用自身,但只调用一次.在我编写的示例代码中完成的方式将永远进行(我猜).
Jac*_*kin 14
如果您只想在应用程序的整个生命周期中说一次,您可以使用dispatch_once,如下所示:
-(void)methodName
{
action1;
action2;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
[self methodName];
});
}
Run Code Online (Sandbox Code Playgroud)
但是,如果你想要执行的方法action1和action2每次调用两次,你有两个选择:
1)用另一种方法包装该功能:
- (void)executeMethod {
[self methodName];
[self methodName];
}
Run Code Online (Sandbox Code Playgroud)
2)更简单,将其包裹在一个循环中:
- (void)methodName {
for(int i = 0; i < 2; ++i) {
action1();
action2();
}
//...
}
Run Code Online (Sandbox Code Playgroud)
您可以使用静态变量:
-(void) methodName
{
static BOOL called = NO;
if (called == NO)
{
called = YES;
[self methodName];
}
else
{
called = NO;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4071 次 |
| 最近记录: |