C yapılarını depolamanın genel yolu nedir NSArray
? Avantajlar, dezavantajlar, bellek kullanımı?
Özellikle, justin ve aşağıdaki yayın balığı tarafından yetiştirilen valueWithBytes
ve arasındaki fark nedir valueWithPointer
?
İşte Apple'ın valueWithBytes:objCType:
gelecekteki okuyucular için tartışmasına bir bağlantı ...
Bazı yanal düşünme ve daha performans bakarak için Evgen kullanarak konusu gündeme getiriliyor STL::vector
içinde C ++ .
(Bu ilginç bir sorunu ortaya çıkarıyor: hızlı bir c kütüphanesi var mı, farklı olmayan STL::vector
ama çok daha hafif, minimum "dizilerin düzenli işlenmesine" izin veren ...?)
Yani asıl soru ...
Örneğin:
typedef struct _Megapoint {
float w,x,y,z;
} Megapoint;
Öyleyse: kişinin kendi yapısını böyle bir şekilde saklamanın normal, en iyi, deyimsel yolu NSArray
nedir ve bu deyimdeki belleği nasıl ele alırsınız?
Lütfen özellikle yapıları depolamak için her zamanki deyimi aradığımı unutmayın. Elbette, yeni bir küçük sınıf oluşturarak bu sorunu önleyebilirsiniz. Bununla birlikte, yapıları bir diziye koymak için her zamanki deyimin nasıl olduğunu bilmek istiyorum, teşekkürler.
BTW işte NSData yaklaşımı, belki de nedir? en iyisi değil ...
Megapoint p;
NSArray *a = [NSArray arrayWithObjects:
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
[NSData dataWithBytes:&p length:sizeof(Megapoint)],
nil];
BTW bir referans noktası olarak ve Jarret Hardie sayesinde, işte burada nasıl saklanacağı CGPoints
ve benzerleri NSArray
:
NSArray *points = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
nil];
( bkz.CGPoint nesnelerini bir NSArray'e kolay yoldan nasıl ekleyebilirim? )