1#import <Foundation/Foundation.h>
2#include <iostream>
3
4@interface MyString : NSObject {
5    NSString *_string;
6    NSDate *_date;
7}
8- (id)initWithNSString:(NSString *)string;
9
10@property (copy) NSString *string;
11@property (readonly,getter=getTheDate) NSDate *date;
12
13- (NSDate *) getTheDate;
14@end
15
16@implementation MyString
17
18@synthesize string = _string;
19@synthesize date = _date;
20
21- (id)initWithNSString:(NSString *)string
22{
23    if (self = [super init])
24    {
25        _string = [NSString stringWithString:string];
26        _date = [NSDate date];
27    }
28    return self;
29}
30
31- (void) dealloc
32{
33    [_date release];
34    [_string release];
35    [super dealloc];
36}
37
38- (NSDate *) getTheDate
39{
40    return _date;
41}
42
43- (NSString *)description
44{
45    return [_string stringByAppendingFormat:@" with timestamp: %@", _date];
46}
47@end
48
49int main (int argc, char const *argv[])
50{
51    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
52    static NSString *g_global_nsstr = @"Howdy";
53
54    MyString *myStr = [[MyString alloc] initWithNSString: [NSString stringWithFormat:@"string %i", 1]];
55    NSString *str1 = myStr.string;
56    NSString *str2 = [NSString stringWithFormat:@"string %i", 2];
57    NSString *str3 = [NSString stringWithFormat:@"string %i", 3];
58    NSArray *array = [NSArray arrayWithObjects: str1, str2, str3, nil];
59    NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
60                            str1, @"1",
61                            str2, @"2",
62                            str3, @"3",
63                            myStr.date, @"date",
64                            nil];
65
66    id str_id = str1;
67    SEL sel = @selector(length);
68    [pool release];
69    std::cout << "Hello, objc++!\n";
70    return 0;
71}
72