2011-07-26 9 views

Odpowiedz

4

Nie, to nie problem. immutableData zostanie zainicjowany danymi w mutData.

10

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.