3

我的问题是为什么它输出日志中的最后 4 行(见下文)......这些对象是日志中先前打印的字典的一部分,不应该位于数组的末尾?我在这里遗漏了一些基本的东西......谢谢

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>
2009-07-02 09:35:12.758 WhatATool[6407:10b] {
“苹果商店” = 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] iTunes U 上的斯坦福
2009-07-02 09:35:12.761 WhatATool[6407:10b] stanfordshop.com
2009-07-02 09:35:12.762 WhatATool [6407:10b] 斯坦福购物中心

4

2 回答 2

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];

工作?

于 2009-07-02T00:35:02.743 回答
4

打开警告(其他警告标志“-Wall”),你会得到:

警告:函数调用中缺少哨兵

在你的 NSMutableArray arrayWithObjects 方法的末尾告诉你丢失的 nil。

于 2009-07-02T02:47:06.860 回答