【发布时间】:2011-07-19 19:54:04
【问题描述】:
Noob 在这里卡住了,可能会做一些愚蠢的事情,希望得到一些指导。
我已经在我的 .h 文件中声明了一个 NSMutableArray (resultArray),在 .m 文件中设置了 @property 和 @synthesize。
在 initWithNibName 中,我正在为数组执行分配和初始化:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
// Custom initialization
resultArray = [[NSMutableArray alloc] init];
}
return self;
}
在我的一种方法中,我尝试在 for 循环中执行 addObject,但无论我尝试什么,数组似乎都不包含对象(通过使用 objectAtIndex 或 count):
for (int i=[resultNumber length]; i>0; i--) {
NSString *theNumberRes = [NSString stringWithFormat:@"%c",[resultNumber characterAtIndex:i-1]];
[resultArray addObject:theNumberRes];
}
NSLog(@"array count: %i", [resultArray count]);
我可以单步执行代码并查看代码在循环中运行的次数与预期一样多,但 NSLog 永远不会给出 0 以外的结果(并且将鼠标悬停在 resultArray 上始终显示 0 个对象。(简而言之,数组中的每个对象都应该是反向字符串中的一个字符 - 例如,如果 resultNumber 是 12345,则数组应该存储 5,4,3,2,1)。
我看到许多其他问题提出了类似的问题,但它们似乎没有帮助,或者我不明白答案并且不想用我的问题劫持别人的问题。
请有人告诉我如何让它工作?
【问题讨论】:
-
这主要是因为
resultArray是调用日志的nil。您可以通过NSLog(@"%@", resultArray);来验证这一点。您还应该验证它们是否是同一个实例。在您列出的两种方法中尝试NSLog(@"%@", self);。 -
@Deepak 已经调用它,您的 resultArray 很可能没有被初始化。你是如何实例化视图的?您应该在该 init 方法中放置一个 NSLog 以确保它被调用。
-
你是如何创建你的 UIViewController 的?它是来自 NIB 还是您在代码中创建它?如果是后者,你能告诉我们相关的代码行吗?
-
谢谢大家,回到我的绘图板上。 initWithNibName 没有触发。我可以通过在同一方法中执行 init 来使代码工作,但是该数组在其他方法中不可用。我意识到我在这里遗漏了一些明显的东西,所以我会自己调查一下。再次感谢
标签: objective-c nsmutablearray