Objective c 目标c NSURL可能对+;initFileURLWithPath
ApplicationIDFinishLaunching函数中有两行代码:Objective c 目标c NSURL可能对+;initFileURLWithPath,objective-c,cocoa,Objective C,Cocoa,ApplicationIDFinishLaunching函数中有两行代码: NSString *targetFilePath = @"/Users/bob/Documents/About_Stacks.pdf"; NSURL *targetFileURL = [NSURL initFileURLWithPath:targetFilePath]; 我在第二行得到警告(标题) 我不知道我做错了什么。这是一个荒谬的简单应用程序。。。我读过其他关于重新排序方法的文章,但我使用的是NS提供的类,而不是我
NSString *targetFilePath = @"/Users/bob/Documents/About_Stacks.pdf";
NSURL *targetFileURL = [NSURL initFileURLWithPath:targetFilePath];
我在第二行得到警告(标题)
我不知道我做错了什么。这是一个荒谬的简单应用程序。。。我读过其他关于重新排序方法的文章,但我使用的是NS提供的类,而不是我自己的类
任何建议都将不胜感激
谢谢。该警告是正常的,因为方法
initFileURLWithPath
是一个实例方法,而不是类方法。正确的使用方法是:
NSString *targetFilePath = @"/Users/bob/Documents/About_Stacks.pdf";
NSURL *targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath];
您必须先
alloc
anNSURL
NSURL *targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath];
如果该方法以“init”开头,则意味着应该在已分配的实例上而不是在类本身上调用它。
initFileURLWithPath:
是一个实例方法,而不是类方法,因此必须首先使用alloc
创建类的实例。因此:
NSString* targetFilePath = @"/Users/bob/Documents/About_Stacks.pdf";
NSURL* targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath];
如果要使用便利方法,请使用fileURLWithPath:
,以便:
NSURL* targetFileURL = [NSURL fileURLWithPath:targetFilePath];
我认为问题在于NSURL必须首先使用alloc创建。 仅仅宣布这是行不通的 此外,我认为您需要稍后释放它,否则将有一个潜在的泄漏
NSURL *targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath];
//做点什么
[targetFileURL release ];