2011-11-14 4 views
1

私は、Apple Devの行に沿ってテーブル用の並行イメージローダーを実装しています。 NSOpertaionのビデオ。NSData dataWithContentsOfURLリークとdatawithContentsOfURL:options:エラーはURLがnilであることを報告しますか?

私のNSOperationの主なものの中には、他にもこのコード行があります(imageURLは有効なURL文字列であり、NSOperationにivarとして保存されています) :

UIImage * newThumbnail = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL]]]; 

上記のコードは動作しますが、NSDataのdataWithContentsOfURLを呼び出すときに機器がCFHTTPCookieStorageリークを報告します。だから、CF漏れのように思えます。私はそれについてはあまりできません。彼らがdataWithContentsOfURLに切り替えた場合、誰かが言った:options:error漏れは起こらないだろう。

だから私は先に行って、試してみました上記の行を意味することになり、ということ:

UIImage * newThumbnail = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageURL] options:0 error:&error]]; 

しかし、私は、以前与えるもの!:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSConcreteData initWithContentsOfURL:options:error:]: nil URL argument' 

を働いた同じURLWithStringの例外を取得?

+0

NSURLコンストラクタに渡す前にURL文字列(stringByAddingPercentEscapesUsingEncoding :)をエスケープしていないため、NSURLオブジェクトがnilであるというNSInvalidArgumentExceptionが発生しました。 – Motasim

答えて

1

NSOperationsを使用するのではなく、Grand Central Dispatchのラッパーを使用する必要があります。しばらく前に書いたものをチェックアウトすることができます:https://github.com/MaxKDevelopment/MKImageCenter

+0

おかげさまで、私はそれをチェックします。しかし、まだ、私は変なことをしていません。NSOpsをうまく使うことができますか?私が知る限り、dataWithContentsOfURLはスレッド化されていません。 NSopはありますが、NSDataメソッドはNSOpによって子プロセスのスポーン内で同期して実行されている必要があります。私にとっては、これはAppleのSDKのバグのように思えます。私は間違っているかもしれませんが。 – SaldaVonSchwartz

関連する問題