ivars和重复的方法

时间:2014-03-15 12:30:01

标签: ios iphone ipad cocoa-touch

我必须调用一个反复出现的方法,换句话说,该方法会自行调用。

同时我必须有一个方法将使用的控制变量。

首先我想要声明像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变量,而不是在类标题上使用该变量。

2 个答案:

答案 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;
}