我的具体问题是关于使用URLByAppendingPathComponent,但该原则适用于许多其他类/方法和情况。
我有以下(缩写)代码:
NSData *packageData = [[NSData alloc] initWithContentsOfURL:[myDirectoryURL URLByAppendingPathComponent:myFileURL]];
...
ret = [self.fileManager removeItemAtURL: [myDirectoryURL URLByAppendingPathComponent:myFileURL]];
所以我使用NSURL:URLByAppendingPathComponent两次使用相同的参数。我的问题是哪个更有效,这样做,或创建一个新的NSURL *并将调用的结果分配给URLByAppendingPathComponent,然后使用它作为initWithContentsOfURL和removeItemAtURL的参数。 我认为第二种方法更好,但因为我对iOS很新,而ARC想要仔细检查。 (这个调用将创建的对象的生命周期是什么?我正在使用ARC,因此我认为它们的生命周期是在使用它们的功能块范围的末尾。)
答案 0 :(得分:1)
保存URL比使用额外时间创建(和解除分配)更有效。
但,谁在乎呢?您应该问哪个是最清晰的代码,以后您将能够理解和维护。您永远不会在紧密循环中从URL加载,效率可能很重要。
DRY(不要重复自己)原则建议您创建一次URL,因为您只在一个地方拥有代码。这样,如果某些事情发生变化(例如,您需要清理myFileURL以防止攻击),您只需要在一个地方进行更改。