use*_*364 1 xcode objective-c selector ziparchive
当我创建一个NSOpenPanel时,像这样:
int i;
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setCanChooseDirectories:YES];
if ([openDlg runModalForDirectory:nil file:nil] == NSOKButton)
{
NSArray* files = [openDlg filenames];
for( i = 0; i < [files count]; i++ )
{
NSString* fileName = [files objectAtIndex:i];
NSLog(fileName);
NSString *catched = fileName;
[self performSelector:@selector(decompresss2z:) withObject:catched];
}
}
Run Code Online (Sandbox Code Playgroud)
当我记录fileName,它是正确的并打印我的文件完整目录,但当我尝试使用它与我的虚空,它就像超级奇怪的字母,像ÿ^ 0f完全随机.为什么?
zpa*_*ack 12
这段代码没有错.实际上,有许多事情对于该代码并不理想,但没有任何东西会使它无效.decompresss2z:function看起来像什么?
如果这是我的代码,我会做出以下更改:
runModalForDirectory:file:已弃用; 你应该用runModal.filenames已弃用; 你应该使用URLs(你可以调用path每个URL来获取文件名).NSLog的参数需要是一个格式字符串,否则就会发生奇怪的事情.in关键字),而不是使用索引循环容器.它不仅效率更高,代码更少(代码更少).performSelector:withObject:这里打电话; 只是正常调用方法.重写,它看起来像这样:
NSOpenPanel* openDlg = [NSOpenPanel openPanel];
[openDlg setCanChooseFiles:YES];
[openDlg setCanChooseDirectories:YES];
if ( [openDlg runModal] == NSOKButton ) // See #1
{
for( NSURL* URL in [openDlg URLs] ) // See #2, #4
{
NSLog( @"%@", [URL path] ); // See #3
[self decompresss2z:[URL path]]; // See #5
}
}
Run Code Online (Sandbox Code Playgroud)
但是,这些更改都不会改变您的实际问题.为了进一步提供帮助,我们需要查看更多代码.具体来说,我想看看decompressss2z:看起来像什么.
| 归档时间: |
|
| 查看次数: |
5167 次 |
| 最近记录: |