วิธีปกติในการจัดเก็บโครงสร้าง c ใน an NSArray
คืออะไร? ข้อดีข้อเสียการจัดการหน่วยความจำ?
โดยเฉพาะอย่างยิ่งความแตกต่างระหว่างvalueWithBytes
และvalueWithPointer
- เลี้ยงโดยจัสตินกับปลาดุกด้านล่างคืออะไร
นี่คือลิงค์ไปยังการสนทนาของ Apple valueWithBytes:objCType:
สำหรับผู้อ่านในอนาคต ...
สำหรับการคิดด้านข้างและดูประสิทธิภาพมากขึ้น Evgen ได้ยกประเด็นการใช้งาน STL::vector
ในC ++
(นั่นทำให้เกิดประเด็นที่น่าสนใจคือมีไลบรารี c แบบเร็วซึ่งไม่ต่างจากSTL::vector
แต่เบากว่ามากที่ช่วยให้ "จัดการอาร์เรย์เป็นระเบียบเรียบร้อยน้อยที่สุด ... ?)
ดังนั้นคำถามเดิม ...
ตัวอย่างเช่น:
typedef struct _Megapoint {
float w,x,y,z;
} Megapoint;
ดังนั้น: อะไรคือวิธีปกติที่ดีที่สุดและเป็นสำนวนในการจัดเก็บโครงสร้างของตัวเองในรูปแบบ NSArray
นั้นและคุณจัดการกับหน่วยความจำในสำนวนนั้นอย่างไร
โปรดทราบว่าฉันกำลังมองหาสำนวนปกติเพื่อจัดเก็บโครงสร้างโดยเฉพาะ แน่นอนเราสามารถหลีกเลี่ยงปัญหานี้ได้โดยการสร้างชั้นเรียนเล็ก ๆ ใหม่ อย่างไรก็ตามฉันต้องการทราบว่าสำนวนปกติสำหรับการวางโครงสร้างในอาร์เรย์เป็นอย่างไรขอบคุณ
BTW นี่คือแนวทาง NSData ซึ่งอาจเป็น? ไม่ดีที่สุด ...
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 เป็นจุดอ้างอิงและต้องขอบคุณ Jarret Hardie นี่คือวิธีการจัดเก็บCGPoints
และสิ่งที่คล้ายกันในNSArray
:
NSArray *points = [NSArray arrayWithObjects:
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
[NSValue valueWithCGPoint:CGPointMake(6.9, 6.9)],
nil];
(ดูฉันจะเพิ่มวัตถุ CGPoint ไปยัง NSArray ด้วยวิธีง่ายๆได้อย่างไร )