I am pretty new to Objective-C (so far I was working with .NET and mainly with ANSI C).
So I am interssted in following:
In .NET I have:
struct Vector { float X, float Y ... float Length() .. }
But how to manage to do this in Objective-C ?
Using class for Vector3 representation is really dumm, because of huge amount of classes.
I only have Idea do struct in C way and then static class with static methods like Length(struct Vector3 * vec)
Is this good way, or way to hell ? And how to do it right-way…
Thanks
In general, unless you have a real, actual problem with performance and/or memory usage, define an Objective-C class. Having an Objective-C class will allow you to easily use it in Objective-C collections, property lists, memory management via autorelease pools, and introspection.
That being said, if you have a very simple set of attributes and functions and/or performance/memory are bootlenecks, feel free to use structures and global functions. They’re small and cheap. Apple’s frameworks make use of them — for instance,
NSSize/CGSizeis a simple structure that holds two attributes, width and height, and there are a few functions that operate on them:There are other cases in Apple’s frameworks where
structs are used instead of classes, e.g.NSPointandNSRect.If you have attributes that are pointers to dynamically allocated memory, you need to be careful with allocation, initialisation, and deallocation. In these cases, an Objective-C class would be more convenient.
An alternative is to use Objective-C++ and make it a C++ class/structure. For instance,