0
- (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:02AM

そして2番目のログの返信は

MSG=>こんにちは...お元気ですか

NSMutableDictionary内に入った後の「msg」がnullになる理由がわかりませんでしたか?結局のところ、パラメータ「from」も正常に表示されています。そして興味深いのは、完全に表示されているmsgパラメーターをログに記録することです。

ARC対応プロジェクトを使用していますが、このnullの問題が発生しています。NSMutableDictionaryは何度も呼び出され、新しいNSMutableDictionaryが作成され、NSArrayに格納されてさらに使用されるため、このメソッドの外でNSMutableDictionaryを宣言したくありません。

4

1 に答える 1

3
[m objectForKey:msg]

それ自体をキーとして使用してオブジェクトを取り戻そうとしています。正しく:

[m objectForKey:@"msg"]
于 2012-04-29T20:18:00.360 に答える