• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#import <Foundation/Foundation.h>
2
3@protocol MyProtocol
4
5-(const char *)hello;
6
7@end
8
9@interface BaseClass : NSObject
10{
11  int _backedInt;
12  int _access_count;
13}
14
15- (int) nonexistantInt;
16- (void) setNonexistantInt: (int) in_int;
17
18- (int) myGetUnbackedInt;
19- (void) mySetUnbackedInt: (int) in_int;
20
21- (int) getAccessCount;
22
23+(BaseClass *) baseClassWithBackedInt: (int) inInt andUnbackedInt: (int) inOtherInt;
24
25@property(getter=myGetUnbackedInt,setter=mySetUnbackedInt:) int unbackedInt;
26@property int backedInt;
27@property (nonatomic, assign) id <MyProtocol> idWithProtocol;
28@end
29
30@implementation BaseClass
31@synthesize unbackedInt;
32@synthesize backedInt = _backedInt;
33
34+ (BaseClass *) baseClassWithBackedInt: (int) inInt andUnbackedInt: (int) inOtherInt
35{
36  BaseClass *new = [[BaseClass alloc] init];
37
38  new->_backedInt = inInt;
39  new->unbackedInt = inOtherInt;
40
41  return new;
42}
43
44- (int) myGetUnbackedInt
45{
46  // NSLog (@"Getting BaseClass::unbackedInt - %d.\n", unbackedInt);
47  _access_count++;
48  return unbackedInt;
49}
50
51- (void) mySetUnbackedInt: (int) in_int
52{
53  // NSLog (@"Setting BaseClass::unbackedInt from %d to %d.", unbackedInt, in_int);
54  _access_count++;
55  unbackedInt = in_int;
56}
57
58- (int) nonexistantInt
59{
60  // NSLog (@"Getting BaseClass::nonexistantInt - %d.\n", 5);
61  _access_count++;
62  return 6;
63}
64
65- (void) setNonexistantInt: (int) in_int
66{
67  // NSLog (@"Setting BaseClass::nonexistantInt from 7 to %d.", in_int);
68  _access_count++;
69}
70
71- (int) getAccessCount
72{
73  return _access_count;
74}
75@end
76
77int
78main ()
79{
80  BaseClass *mine = [BaseClass baseClassWithBackedInt: 10 andUnbackedInt: 20];
81
82  // Set a breakpoint here.
83  int nonexistant = mine.nonexistantInt;
84
85  int backedInt = mine.backedInt;
86
87  int unbackedInt = mine.unbackedInt;
88
89  id idWithProtocol = mine.idWithProtocol;
90
91  NSLog (@"Results for %p: nonexistant: %d backed: %d unbacked: %d accessCount: %d.",
92         mine,
93         nonexistant,
94         backedInt,
95         unbackedInt,
96         [mine getAccessCount]);
97  return 0;
98
99}
100
101