2011-12-30 4 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 и ARC, нужно дважды проверить. (Каково время жизни объектов, которые будут созданы этим вызовом? Я использую ARC, и я предполагаю, что их срок службы, следовательно, до конца области функционального блока, в котором они используются.)

ответ

1

Это более эффективно сохранять URL, а не создавать (и освобождать) его дополнительное время.

BUT, кому это интересно? Вы должны спросить, что является самым четким кодом, который вы сможете понять и сохранить позже. Вы никогда не будете загружаться с URL-адресов в узком цикле, где эффективность может иметь значение.

Принцип DRY (не повторяйте сам) предполагает, что вы делаете URL-адрес один раз, потому что у вас есть код только в одном месте. Таким образом, если что-то когда-либо изменится (например, вам необходимо очистить myFileURL от атак), вам нужно только внести изменения в одно место.

+0

Спасибо. С длинным URL-адресом, имеющим две копии, используется лишнее несколько сотен байтов, поэтому это то, о чем я забочусь о том, что после кодирования для устройств с гораздо меньшим объемом памяти, чем iOS. – Gruntcakes

+0

Память определенно вызывает беспокойство в iOS, но вначале нужно писать четкий код, который должен быть вашим приоритетом. Затем вы можете лучше понять, как исправить это, если проблема с 100 байтами. (Я готов поспорить, что это не будет ...) –

Смежные вопросы