2011-12-30 205 views
0

我的具體問題是關於使用URLByAppendingPathComponent,但該原則將適用於許多其他類/方法和情況。最有效地使用URLByAppendingPathComponent

我有以下的(略)代碼:

NSData *packageData = [[NSData alloc] initWithContentsOfURL:[myDirectoryURL URLByAppendingPathComponent:myFileURL]]; 

... 

ret = [self.fileManager removeItemAtURL: [myDirectoryURL URLByAppendingPathComponent:myFileURL]]; 

所以我用NSURL:URLByAppendingPathComponent兩次用同樣的參數。我的問題是哪個更高效,是這樣做的,還是創建一個新的NSURL *並將調用的結果分配給URLByAppendingPathComponent,然後將其作爲initWithContentsOfURL和removeItemAtURL的參數。 我認爲第二種方法更好,但因爲我對iOS和iOS非常陌生,所以想仔細檢查。 (這次調用將創建的對象的生命週期是多少?我使用的是ARC,因此我認爲它們的生命週期因此在它們所在的功能塊範圍的末尾)。

回答

1

它是更有效地保存URL而不是創建(並釋放)額外的時間。

但是,誰在乎?你應該問清楚哪一個是最清晰的代碼,以後才能理解和維護。你永遠不會從URL中加載緊密的循環,效率可能很重要。

DRY(不要重複自己)原則建議您只創建一次URL,因爲您只有一個地方的代碼。這樣,如果事情發生了變化(例如,您需要清理myFileURL以抵禦攻擊),則只需在一個位置進行更改即可。

+0

謝謝。有了兩個副本的長URL需要多用幾百個字節,所以這是我在編寫內存比iOS更低的設備後所關心的問題。 – Gruntcakes 2011-12-30 18:35:10

+0

內存在iOS中絕對是一個值得關注的問題,但再次寫清晰的代碼應該是您的首要任務。如果100字節成爲問題,那麼你可以更好地弄清楚如何修復它。 (我願意打賭它不會是......) – 2011-12-30 19:25:50