我的问题是为什么它会输出日志中的最后4行(见下文)......这些对象是早先在日志和日志中打印的字典的一部分。不应该位于数组的末尾?我在这里缺少一些基本的东西... thx
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:
[NSURL URLWithString: @"www.stanford.edu"],
@"Stanford University",
[NSURL URLWithString: @"www.apple.com"],
@"Apple shop",
[NSURL URLWithString: @"cs193p.stanford.edu"],
@"CS193P course",
[NSURL URLWithString: @"itunes.stanford.edu"],
@"Stanford on iTunes U",
[NSURL URLWithString: @"stanfordshop.com"],
@"Stanford Mall",
nil];
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:
[NSString init],
[NSURL URLWithString: @"www.stanford.edu"],
[NSProcessInfo processInfo],
dictionary,
[@"Mutable string example" mutableCopy],
[@"another mutable string" mutableCopy]];
NSEnumerator *enumerator = [myArray objectEnumerator];
id object;
while ((object = [enumerator nextObject])) {
NSLog([object description]);
}
2009-07-02 09:35:12.756 WhatATool [6407:10b] NSString
2009-07-02 09:35:12.756 WhatATool [6407:10b] www.stanford.edu
2009-07-02 09:35:12.757 WhatATool [6407:10b] <NSProcessInfo: 0x107e20
&gt;
2009-07-02 09:35:12.758 WhatATool [6407:10b] {
“Apple shop”= www.apple.com;
“CS193P课程”= cs193p.stanford.edu;
“斯坦福购物中心”= stanfordshop.com;
“斯坦福大学”= www.stanford.edu;
“斯坦福在iTunes U上”= itunes.stanford.edu;
}
2009-07-02 09:35:12.758 WhatATool [6407:10b]可变字符串示例
2009-07-02 09:35:12.759 WhatATool [6407:10b]另一个可变的字符串
2009-07-02 09:35:12.760 WhatATool [6407:10b] itunes.stanford.edu
2009-07-02 09:35:12.760 WhatATool [6407:10b] Stanford在iTunes U上
2009-07-02 09:35:12.761 WhatATool [6407:10b] stanfordshop.com
2009-07-02 09:35:12.762 WhatATool [6407:10b]斯坦福购物中心
答案 0 :(得分:24)
当你使用方法创建NSMutableArray时,我认为你缺少必要的nil作为最后一个参数。确实
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:
[NSString init],
[NSURL URLWithString: @"www.stanford.edu"],
[NSProcessInfo processInfo],
dictionary,
[@"Mutable string example" mutableCopy],
[@"another mutable string" mutableCopy],
nil];
工作?
答案 1 :(得分:4)
打开警告(其他警告标志“-Wall”),您将获得:
警告:函数调用中缺少sentinel
在NSMutableArray arrayWithObjects方法的末尾告诉你缺少的nil。