(Highly geeky post ahead. You’ve been warned!)
I have found the very message that summarizes the beauty of Cocoa in a single word; see by yourselves, hereunder in line 47:
#import <Foundation/Foundation.h>
// The interface of a person
@interface Person : NSObject {
NSString* firstName;
NSString* lastName;
int age;
}
@end
// The implementation of the Person
@implementation Person
-(id)init {
if (self = [super init]) {
firstName = @"";
lastName = @"";
age = 0;
}
return self;
}
-(void)dealloc {
[firstName release];
[lastName release];
[super dealloc];
}
-(NSString*)description {
return [[NSString alloc]
initWithFormat:@"Name: %@ %@, %d years old",
firstName, lastName, age];
}
@end
// Some code using the Person class
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableDictionary* dict = [[[NSMutableDictionary alloc] init] autorelease];
[dict setObject:@"Teto" forKey:@"firstName"];
[dict setObject:@"Rodriguez" forKey:@"lastName"];
[dict setObject:[[NSNumber alloc] initWithInt:34] forKey:@"age"];
Person* person = [[[Person alloc] init] autorelease];
// The beauty of Cocoa can be resumed to this very line:
[person setValuesForKeysWithDictionary:dict];
// Now sit back and relax:
NSLog([person description]);
[pool drain];
return 0;
}