0

所以我有这段代码:

- (void) connectSelector:(NSArray *)args {
NSError* error;
NSString* data = [NSString stringWithContentsOfURL:[NSURL URLWithString:[args objectAtIndex:0]] encoding:NSASCIIStringEncoding error:&error];

NSLog(@"%@", data);

NSDictionary* dictionary = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:@"connector", @"data", @"error", nil] forKeys:[NSArray arrayWithObjects:self, data, error, nil]];

[[args objectAtIndex:1] performSelector:@selector(dataDownloaderDidDownloadData:) withObject:dictionary];
}

字典中的值 NSArray 正在失去其“自我”价值。为什么会这样?

提前致谢!

4

2 回答 2

3

看起来您已经将键和值元素从后到前。你可能的意思是:

NSDictionary* dictionary = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:self, data, error, nil] forKeys:[NSArray arrayWithObjects:@"connector", @"data", @"error", nil] ];

或者使用现代语法:

NSDictionary *dictionary = @{ @"connector" : self, @"data" : data, @"error" : error };

(不是每个对象都可以用作字典中的键)。

于 2013-08-14T05:43:59.283 回答
1

arrayWithObjects 可能是这种情况(但不确定),因为它返回一个自动释放的数组。使用 initWithObjects 返回一个数组,然后您必须释放以避免内存泄漏。

检查这个:iPad large NSArray - initWithObjects vs. ArrayWithObjects

于 2013-08-14T05:44:11.917 回答