当存储在NSMutableDictionary中时,为什么在method参数中传递的值变为null

时间:2012-04-29 20:15:23

标签: ios

- (void) msg:(NSString *)msg from:(NSString *)from
{
     NSMutableDictionary *m = [[NSMutableDictionary alloc] init];
     [m setObject:msg forKey:@"msg"];
     [m setObject:from forKey:@"sender"];
     [m setObject:[NSString getCurrentTime] forKey:@"time"];


NSLog(@"MSG=>%@ : FROM=>%@ : TIME=>%@",[m objectForKey:msg], [m objectForKey:@"sender"], [m objectForKey:@"time"]);

NSLog(@"MSG=>%@",msg);

}

第一个日志的回复是

  

MSG =>(null):FROM =>你的朋友! :TIME => 2012年4月30日上午12:52:02

第二个日志的回复是

  

MSG =>你好......你好吗

我不明白为什么“msg”进入NSMutableDictionary后变为null?毕竟参数“from”也显示正常。有趣的是记录msg参数直接显示完美。

我正在使用启用ARC的项目并获得此null问题。我不想在这个方法的外面声明NSMutableDictionary,因为它被多次调用,并且每次在NSArray中创建和存储新的NSMutableDictionary以供进一步使用。

1 个答案:

答案 0 :(得分:3)

[m objectForKey:msg]

是错误的,你试图用自己作为关键来取回对象。正确地:

[m objectForKey:@"msg"]