2011-08-05 11 views
0

でクラッシュが発生します。読むのURLこのコードは、SIGABRTでクラッシュSIGABRT

NSOpenPanel *openPanel = [NSOpenPanel openPanel]; 
[openPanel runModalForTypes:nil]; 
NSArray* URLs = [openPanel URLs]; 
for (NSString* item in URLs) 
{ 
    NSLog(item); // here it crashes with SIGABRT 
} 

私は、コードに何か問題が表示されていないが、私はObjective-Cのでは初心者です。

答えて

1

代わりにfor (NSURL *url in URLs)を実行してください。何らかの理由で、NSStringを間違って使用しています。

また、次のようにログに記録する必要があります。NSLog(@"%@", url);これはあなたがそれを行うべき方法です。オブジェクトをNSLogに直接渡すべきではありません。

+0

はい、これは問題のようです。私はおそらく 'NSLog(@"%@ "、[url path]);'を使用します。 –

+0

@enchilada答えをありがとう、私のコードは今素晴らしいです!しかし、C++から来て、私はこの場合コンパイルエラーが予想されますが、目的型-cではポインタ型のチェックはありませんか? – sashoalm

+0

もちろん、ポインタ型のチェックがあります。 NSLogは実際に文字列を期待していて、警告を受け取っていないので、以前は "NSString * item"と書いていたので、もともとはコンパイル時の警告を受け取っていませんでした。あなたは "NSURL * url"という警告を得ているはずです。しかし、私はどちらの場合でも、オブジェクトをNSLogに直接渡すときに何らかの警告を発するべきだったと思います。私はそのような警告を見たことを思い出しているようです。たぶんそれはコンパイラの設定に依存します。 – Enchilada