Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 从NSOpenPanel读取URL会导致SIGABRT崩溃_Objective C_Xcode_Macos - Fatal编程技术网

Objective c 从NSOpenPanel读取URL会导致SIGABRT崩溃

Objective c 从NSOpenPanel读取URL会导致SIGABRT崩溃,objective-c,xcode,macos,Objective C,Xcode,Macos,此代码与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的初学者。

此代码与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的初学者。

试着为(NSURL*url-in-url)做
。由于某些原因,您错误地使用了
NSString


另外,您应该这样记录:
NSLog(@“%@”,url)这是您应该使用的方法。您不应该将对象直接传递给
NSLog

是的,这似乎就是问题所在。我可能会使用
NSLog(@“%@,[url path])
@enchilada谢谢你的回答,我的代码现在很好用!但是来自C++的我会想到编译错误,在Objy-C中没有指针类型检查吗?当然,有指针类型检查。您最初没有收到编译时警告,因为NSLog确实需要字符串,并且您之前编写了“NSString*item”,所以没有收到任何警告。不过,你应该得到一个带有“NSURL*url”的警告。但我认为在这两种情况下,当您将一个对象直接传递到NSLog时,您应该得到某种警告。我似乎记得看到过这样的警告。可能这取决于编译器设置。