2011-07-26 19 views
12

iletmenin bir değişken veri örneğini değiştirmek için aşağıdakileri yapmak için benim için bir sorun var mı?tamam + [NSData dataWithData] çağırmak mı?

NSMutableData *mutData = [[NSMutableData alloc] init]; 
//Giving some value to mutData 
NSData *immutableData = [NSData dataWithData:mutData]; 
[mutData release]; 

cevap

4

Hayır, sorun değil. immutableData, mutData'daki verilerle başlatılacaktır.

10

Bu tamamen iyidir ve aslında dataWithData: başlıca amaçlarından biri olduğunu -. Bir değişken nesnenin değişmez bir kopyasını oluşturmak için *

NSData da NSCopying protocol uyan, ** yaparsın demektir bunun yerine [mutData copy] kullanın. Fark dataWithData:per memory management rules ise copy kimin hafıza Eğer sorumlu olan bir nesne oluşturur size ait olmayan bir nesneyi (o autoreleased edilir) döndürür olmasıdır. dataWithData:, [[mutData copy] autorelease] etki alanına eşdeğerdir.

Böylece, ortaya çıkan nesnenin ömrü boyunca gereksinimlerinize bağlı olarak dataWithData: veya copy'u seçebilirsiniz.


Bu işlem ayrıca +[NSArray arrayWithArray:], örneğin bir değişken alt sınıfı olan diğer sınıfları benzer yöntemler için de geçerlidir.

** Uzmanlık Kılavuzu'nda da "Object Copying" bakınız.

İlgili konular