-1

私は他のクラスに渡そNSMutableDictionaryうとしています。NSNotificationしかし、リリース時にNSMutableDictionaryアプリケーションがクラッシュします。誰でも助けることができますか?私はこれを試しています

NSMutableDictionary *temp = [[NSMutableDictionary alloc]init];

NSString *responseString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
temp =  [responseString JSONValue];
NSLog(@"webdata is %@",temp);
NSLog(@"inside usersignup success");
[[NSNotificationCenter defaultCenter] postNotificationName:CNotifySignupSucess object:temp];
[temp release];
4

1 に答える 1

1

まず、iOS プログラミングの基本をいくつか読む必要があります。と、

NSMutableDictionary *temp = [[NSMutableDictionary alloc]init];

NSString *responseString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
temp =  [responseString JSONValue]; //----> this line is wrong

tempポインターは新しく作成されたオブジェクトを指しているため、メソッドNSMutableDictionaryによって返された別のオブジェクト、つまりオブジェクトにそれを再割り当てしているため、それを所有していないため、できません。あなたが望む欲求を達成するためのより良い方法は次のとおりです。JSONValueautoreleaserelease

NSString *responseString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
    NSMutableDictionary *temp =  [responseString JSONValue];
    NSLog(@"webdata is %@",temp);
    NSLog(@"inside usersignup success");
    [[NSNotificationCenter defaultCenter] postNotificationName:CNotifySignupSucess object:temp];
    //NO RELEASING the AUTORELEASE OBJECT!!!!

また:

NSString *responseString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
    NSMutableDictionary *temp = [[NSMutableDictionary alloc]initWithDictionary:[responseString JSONValue]];
    NSLog(@"webdata is %@",temp);
    NSLog(@"inside usersignup success");
    [[NSNotificationCenter defaultCenter] postNotificationName:CNotifySignupSucess object:temp];
    [temp release];

また:

NSMutableDictionary *temp = [[NSMutableDictionary alloc]init];

    NSString *responseString = [[NSString alloc] initWithData:webData encoding:NSUTF8StringEncoding];
    [temp addEntriesFromDictionary:[responseString JSONValue]];
    NSLog(@"webdata is %@",temp);
    NSLog(@"inside usersignup success");
    [[NSNotificationCenter defaultCenter] postNotificationName:CNotifySignupSucess object:temp];
    [temp release];

最後の 2 つのケースでは、JSONValueメソッドが を返すと考えていますNSDictionary。グーラック!

于 2013-03-06T05:38:36.120 に答える