2011-09-13 4 views
1

NSDataにデバイストークンを取得してNSStringに変換しています。これは、デバイストークンを正しくNSDataからデバイストークンを取得すると例外が発生する

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 


    deviceToken = [[devToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 



    deviceToken = [deviceToken stringByReplacingOccurrencesOfString:@" " withString:@""]; 


    NSLog(@"Device Token from NSdata is %@",deviceToken); 


} 

を印刷していると、私は他のクラス

self.Token = [AppDelegate_iPhone sharedAppDelegate].deviceToken; 

からこれを渡していますが、それはこのラインここ

NSLog(@"Device Token from NSdata is %@",deviceToken); 

*** -[CFString respondsToSelector:]: message sent to deallocated instance 0x1f9d00 

答えて

3

値をdeviceTokenに割り当てるだけです。値を保持する必要があります。それ以外の場合は、直後に解放されます。

deviceToken = [[deviceToken stringByReplacingOccurrencesOfString:@" " withString:@""] retain]; 
+1

ありがとうございます。これは現在動作していますが、なぜリリースされるのですか? – iProgrammer

+0

@IphoneDeveloper 'stringByReplacingOccurencesOfString:'は、自動リリースされたオブジェクトを返します。実行しないようにしたい場合(実行ループサイクルの最後に)、値を保持する必要があります。 – Jilouc

+0

この情報のおかげでたくさん.. :) – iProgrammer

0

にクラッシュし、私はそれを行っている方法を過去:

const void *devTokenBytes = [devToken bytes];
NSString *deviceToken = [[[[devToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""] stringByReplacingOccurrencesOfString: @">" withString: @""] stringByReplacingOccurrencesOfString: @" " withString: @""];

+0

私もこれを試しました。デバイストークンの取得に問題はありません。別のクラスで使用する際に問題が発生しました – iProgrammer

関連する問題