我必须调用一个反复出现的方法,换句话说,该方法会自行调用。
同时我必须有一个方法将使用的控制变量。
首先我想要声明像controlIndex
这样的ivar并在方法中使用它,如下所示:
// declared on .h
NSUInteger controlIndex;
// later on the program...
controlIndex = 100;
[self doItBaby];
...
- (void)doItBaby {
NSArray *subNodes = [node children];
if ([subNodes count] == 0) return;
for (id oneNode in subNodes) {
if ([oneNode isABomb]) {
[oneNode markNodeWithIndex:controlIndex];
controlIndex ++;
}
[self doItBaby];
}
}
这段代码可以完成这项工作,但我正在使用在主类头上声明的这个ivar。
我想知道是否有一种方法可以自我包含controlIndex
变量,而不是在类标题上使用该变量。
答案 0 :(得分:1)
重构你的方法以进行争论。
- (void)doItBaby:(NSUInteger)controlIndex {
NSArray *subNodes = [node children];
if ([subNodes count] == 0) return;
for (id oneNode in subNodes) {
if ([oneNode isABomb]) {
[oneNode markNodeWithIndex:controlIndex];
controlIndex ++;
}
[self doItBaby:controlIndex];
}
}
您仍然必须向其发送初始值并在每次递归调用时重新发送controlIndex
变量,但您的初始值不必是整个类可见的实例变量。
[self doItBaby:100];
答案 1 :(得分:0)
在static NSUInteger controlIndex
doItBaby
- (void)doItBaby {
static NSUInteger controlIndex = 100;
}