2011-11-12 09:36:43 +08:00
|
|
|
#import <Foundation/Foundation.h>
|
|
|
|
|
2013-01-03 08:05:56 +08:00
|
|
|
@protocol MyProtocol
|
|
|
|
|
|
|
|
-(const char *)hello;
|
|
|
|
|
|
|
|
@end
|
|
|
|
|
2011-11-12 09:36:43 +08:00
|
|
|
@interface BaseClass : NSObject
|
|
|
|
{
|
|
|
|
int _backedInt;
|
|
|
|
int _access_count;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (int) nonexistantInt;
|
|
|
|
- (void) setNonexistantInt: (int) in_int;
|
|
|
|
|
|
|
|
- (int) myGetUnbackedInt;
|
|
|
|
- (void) mySetUnbackedInt: (int) in_int;
|
|
|
|
|
|
|
|
- (int) getAccessCount;
|
|
|
|
|
|
|
|
+(BaseClass *) baseClassWithBackedInt: (int) inInt andUnbackedInt: (int) inOtherInt;
|
|
|
|
|
|
|
|
@property(getter=myGetUnbackedInt,setter=mySetUnbackedInt:) int unbackedInt;
|
|
|
|
@property int backedInt;
|
2013-01-03 08:05:56 +08:00
|
|
|
@property (nonatomic, assign) id <MyProtocol> idWithProtocol;
|
2011-11-12 09:36:43 +08:00
|
|
|
@end
|
|
|
|
|
|
|
|
@implementation BaseClass
|
|
|
|
@synthesize unbackedInt;
|
|
|
|
@synthesize backedInt = _backedInt;
|
|
|
|
|
|
|
|
+ (BaseClass *) baseClassWithBackedInt: (int) inInt andUnbackedInt: (int) inOtherInt
|
|
|
|
{
|
|
|
|
BaseClass *new = [[BaseClass alloc] init];
|
|
|
|
|
|
|
|
new->_backedInt = inInt;
|
|
|
|
new->unbackedInt = inOtherInt;
|
|
|
|
|
|
|
|
return new;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (int) myGetUnbackedInt
|
|
|
|
{
|
|
|
|
// NSLog (@"Getting BaseClass::unbackedInt - %d.\n", unbackedInt);
|
|
|
|
_access_count++;
|
|
|
|
return unbackedInt;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) mySetUnbackedInt: (int) in_int
|
|
|
|
{
|
|
|
|
// NSLog (@"Setting BaseClass::unbackedInt from %d to %d.", unbackedInt, in_int);
|
|
|
|
_access_count++;
|
|
|
|
unbackedInt = in_int;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (int) nonexistantInt
|
|
|
|
{
|
|
|
|
// NSLog (@"Getting BaseClass::nonexistantInt - %d.\n", 5);
|
|
|
|
_access_count++;
|
|
|
|
return 6;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (void) setNonexistantInt: (int) in_int
|
|
|
|
{
|
|
|
|
// NSLog (@"Setting BaseClass::nonexistantInt from 7 to %d.", in_int);
|
|
|
|
_access_count++;
|
|
|
|
}
|
|
|
|
|
|
|
|
- (int) getAccessCount
|
|
|
|
{
|
|
|
|
return _access_count;
|
|
|
|
}
|
|
|
|
@end
|
|
|
|
|
|
|
|
int
|
|
|
|
main ()
|
|
|
|
{
|
|
|
|
BaseClass *mine = [BaseClass baseClassWithBackedInt: 10 andUnbackedInt: 20];
|
|
|
|
|
|
|
|
// Set a breakpoint here.
|
|
|
|
int nonexistant = mine.nonexistantInt;
|
|
|
|
|
|
|
|
int backedInt = mine.backedInt;
|
|
|
|
|
|
|
|
int unbackedInt = mine.unbackedInt;
|
|
|
|
|
2013-01-03 08:05:56 +08:00
|
|
|
id idWithProtocol = mine.idWithProtocol;
|
|
|
|
|
2011-11-12 09:36:43 +08:00
|
|
|
NSLog (@"Results for %p: nonexistant: %d backed: %d unbacked: %d accessCount: %d.",
|
|
|
|
mine,
|
|
|
|
nonexistant,
|
|
|
|
backedInt,
|
|
|
|
unbackedInt,
|
|
|
|
[mine getAccessCount]);
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
}
|
|
|
|
|