开发者

Objective-C and Vector3 struct

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/CGSize is a simple structure that holds two attributes, width and height, and there are a few functions that operate on them:

// structs and typedefs
struct CGSize {
    CGFloat width;
    CGFloat height;
};
typedef struct CGSize CGSize;
typedef CGSize NSSize;

// functions
NSSize NSMakeSize(CGFloat w, CGFloat h);
BOOL NSEqualSizes(NSSize aSize, NSSize bSize);
NSString *NSStringFromSize(NSSize aSize);
…

There are other cases in Apple’s frameworks where structs are used instead of classes, e.g. NSPoint and NSRect.

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,

struct Vector3 {
    float X;
    float Y;
    float Length() { return X + Y; }
};
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜