Jest to całkowicie w porządku, i jest w rzeczywistości jednym z głównych zastosowań dataWithData:
. - do tworzenia się niezmienną kopię zmienny obiektu *
NSData
spełnia również do NSCopying
protocol, ** co oznacza, że może zamiast tego użyj [mutData copy]
. Różnica polega na tym, że dataWithData:
zwraca obiekt, który nie należy do Ciebie (jest autoodtwarzany), podczas gdy per memory management rules, copy
tworzy obiekt, dla którego pamięć jest odpowiedzialna. dataWithData:
jest równoważny w efekcie z [[mutData copy] autorelease]
.
Możesz więc wybrać: dataWithData:
lub copy
, w zależności od wymagań dotyczących czasu życia obiektu wynikowego.
* Odnosi się to również do innych podobnych metod w klasach, które mają zmienny podklasy, np +[NSArray arrayWithArray:]
.
** Zobacz także "Object Copying" w Przewodniku po kluczowych kompetencjach.