NSValue doesn’t only support CoreGraphics structures – you can use it for your own too. I would recommend doing so, as the class is probably lighter weight than NSData
for simple data structures.
Simply use an expression like the following:
[NSValue valueWithBytes:&p objCType:@encode(Megapoint)];
And to get the value back out:
Megapoint p;
[value getValue:&p];