0

所以我在一个函数中得到了这个for循环,但它永远不会被输入,

   for (Window *window in _app.windows) {
                        NSLog(@"test.");

    }

我是初学者,所以我从哪里开始调试它并查看它哪里出错了?

编辑 这是在另一个班级

(它在我的 ViewController 中调用的函数 (loadApp) 中,如下所示: self.app = [MyClass loadApp]; ,上面的代码也在我的 ViewController 中。

        Window *window = [[Window alloc] initWithName:title subtitle:subtitle number:number ident:ident type:type chapternumber:chapternumber icon:icon text:text img:img question:question answerFormat:answerFormat answerLength:answerLength tip1:tip1 tip2:tip2 tip3:tip3 tip1Answer:tip1Answer tip2Answer:tip2Answer tip3Answer:tip3Answer];

    [app.windows addObject:window];

}

return app;
4

2 回答 2

2

尝试以下

if(!_app)  {
  NSLog(@"app is nil");
}
else if(!_app.windows) {
  NSLog(@"windows is nil");
}
else  {
  NSLog(@"there are %d windows", [_app.windows count]);
}

我怀疑你会看到有 0 个窗口

于 2013-02-26T17:59:47.097 回答
0

你必须确保你访问的是同一个变量。这就是您获得的所有其他评论和答案的要点。它需要像这样设置。请记住,您的应用程序可能不会完全像这样设置。这只是要遵循的一般结构:

//myViewController.h
#import "WindowClass.h"
#import "AppClass.h"
@property (strong, nonatomic) AppClass *app;


//myViewController.m
#import "myViewController.h"
@synthesize app;

(id)init....{
   //...init code here
   //Synthesized objects must be initialized before they are accessed!
   self.app = [[AppClass alloc] init];
   return self;
}
(void)loadApp {
   WindowClass *aWindow = [[WindowClass alloc] init];
   [self.app.windowArray addObject:aWindow];
   return;
}
(void)loopFunction {
   for (WindowClass *window in self.app.windowArray) {
      NSLog(@"test.");
   }
   return;
}

//AppClass.h
@property (strong, nonatomic) NSArray *windowArray;

//AppClass.m
#import "AppClass.h"
@synthesize windowArray;
于 2013-02-26T18:54:32.797 回答