2011-12-30 204 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