2010-05-29 49 views
2

我在的applicationDidFinishLaunching功能的兩行代碼:目標C NSURL可能不+ initFileURLWithPath迴應

NSString *targetFilePath = @"/Users/bob/Documents/About_Stacks.pdf"; 
NSURL *targetFileURL = [NSURL initFileURLWithPath:targetFilePath]; 

和我得到在第二行的警告(標題)...

我不知道我做錯了什麼。這是一個荒謬的簡單的應用程序...我已閱讀其他職位有關重新排序方法,但我使用NS提供的類,沒有我自己的。

任何意見將不勝感激。

謝謝。

回答

2

警告是正常的,因爲方法initFileURLWithPath是一種實例方法而不是類方法。使用它的正確方法是:

NSString *targetFilePath = @"/Users/bob/Documents/About_Stacks.pdf"; 
NSURL *targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath]; 
3

你必須allocNSURL第一。

NSURL *targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath]; 

如果方法以「init」開頭,則表示它應該在分配的實例上調用,而不是在類本身上調用。

5

initFileURLWithPath:是一個實例方法,而不是一個類方法,所以你必須先用alloc創建一個類的實例。所以:

NSString* targetFilePath = @"/Users/bob/Documents/About_Stacks.pdf"; 
NSURL* targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath]; 

如果您想使用的簡便方法,使用fileURLWithPath:,所以:

NSURL* targetFileURL = [NSURL fileURLWithPath:targetFilePath]; 
1

我認爲這個問題是NSURL必須首先創建使用頁頭。 只是宣佈它不會工作。

另外我想你會需要稍後發佈它,否則會有潛在的泄漏。

NSURL *targetFileURL = [[NSURL alloc] initFileURLWithPath:targetFilePath]; 

//做一些東西

[targetFileURL release ]; 
相關問題