0

CCSprite で URL から画像を表示しています。多くの画像があるため、画像をすばやくロードする必要があります。シミュレーターでは問題なく動作するコードを作成しましたが、iPad ではクラッシュしました。デバイスログから何も理解できません。

私のコード:

NSData *d = [NSData dataWithContentsOfURL:[NSURL URLWithString:[Data valueForKey:[NSString   stringWithFormat:@"%d", idx]]]];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@ %@", documentsDirectory, string];
BOOL didWrite = [d writeToFile:filePath atomically:YES];
CCSprite * facebookImage = [[CCSprite alloc] initWithFile:filePath] ;

ここでは、画像をファイルに保存し、それらのコンテンツを CCSprite に渡しています。

URL からの画像はシミュレーターで適切にフェッチされるようになりましたが、デバイスではこのコードがクラッシュします。PS:他の方法もありますが、うまく機能しなかったので、NSRequestなどよりもこの方法を好みました.

4

2 に答える 2

0

ブレークポイントを設定し、コードをシングル ステップで実行します。"%@ %@"パスにファイル名の前にスペースが含まれているため (フォーマット文字列: )、または文字列が nil であるため、書き込みはおそらく失敗します。

フェールセーフ コードを記述します。既にdidWriteフラグがあり、書き込み (およびダウンロード) が成功したときにスプライトを作成する if 句が必要です。それ以外の場合は、エラーをログに記録し、おそらくプレースホルダー スプライトを作成します。

于 2013-03-25T09:17:56.863 に答える
0

CCSprite で URL から画像を表示するために、アプローチを変更しました。

UIImage *uiimage2 = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]];
CCSprite * facebookImage = [[CCSprite alloc]initWithCGImage:uiimage2.CGImage key:string];

この答えが誰かに役立つことを願っています。

于 2013-03-28T06:53:16.983 に答える