C Structures

Earlier in this chapter, you had a peek at a C structure, which is a collection of named values. Because of the powers of numerous Objective-C and Cocoa Touch data collections (such as NSArray, NSDictionary, and NSSet classes), it’s unlikely you will find yourself needing to compose structures in your code. But you do need to understand how to use the ones that Cocoa Touch uses in some of its own classes. In the course of this discussion, you will see syntax that is reminiscent of functionless JavaScript objects, but structures are not objects in the true sense.

To get a sense of how to use a structure (also known as a C struct), look at the following triumvirate of related CoreGraphics framework structs that Cocoa Touch uses for geometric measurements:

struct CGPoint {
   CGFloat x;
   CGFloat y;
};
typedef struct CGPoint CGPoint;

struct CGSize {
   CGFloat width;
   CGFloat height;
};
typedef struct CGSize CGSize;

struct CGRect {
   CGPoint origin;
   CGSize size;
};
typedef struct CGRect CGRect;

If you search the SDK documentation for any of these data types, you’ll see corresponding struct definitions, each of which reveals important information about the names of the values you will be getting or setting. The typedef statement at the end of each struct turns the struct into a data type of the same name as the struct. Therefore, Cocoa Touch provides the CGPoint, CGSize, and CGRect data types, which you can use to assign as data types to variables holding compatible values. The CGPoint ...

Get Learning the iOS 4 SDK for JavaScript Programmers now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.