スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]TBXML1.5 decodeData:withError が異常終了する場合

decodeData:withErrorで異常終了する場合です。
現在のバージョンを利用していて異常終了するため、何かと思い大量のCoding conventionsの一つに目を通しました。
(そもそもなんでこんなに発生しているものを放置してリリースするのか?)
//TBXML method
- (void) decodeData:(NSData*)data withError:(NSError **)error {

// allocate memory for byte array
[self allocateBytesOfLength:[data length] error:error];

// if an error occured, return
if (error && *error)
return;

// copy data to byte array
[data getBytes:bytes length:bytesLength];

// set null terminator at end of byte array
bytes[bytesLength] = 0;

// decode xml data
[self decodeBytes];

if (!self.rootXMLElement) {
*error = [TBXML errorWithCode:D_TBXML_DECODE_FAILURE];
}
}


この最後の方の処理が問題です。

//このコードでもしかしたら異常終了するかもしれません
//This code possibly will become abnormal termination.
if (!self.rootXMLElement) {
*error = [TBXML errorWithCode:D_TBXML_DECODE_FAILURE];
}


Analyzedでビルドしている方はここの修正をしているかもしれませんが、errorをnilとして代入処理している場合この処理が異常終了していまいます。
なのでerrorの参照元がnilの場合は処理を行わないように処理をします。

//参照元がnilでない場合は処理する
//When 'error' is not nil, then this code do it.
if (!self.rootXMLElement) {
if(error)*error = [TBXML errorWithCode:D_TBXML_DECODE_FAILURE];
}


これで正常に動作するはずです。
このエントリーをはてなブックマークに追加

tag : iOS TBXML 1.5 異常 終了

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。