1#import <Foundation/Foundation.h>
2#import "InternalDefiner.h"
3
4@interface Container : NSObject {
5@public
6    InternalDefiner *_definer;
7}
8
9-(id)init;
10@end
11
12@implementation Container
13
14-(id)init
15{
16    if (self = [super init])
17    {
18        _definer = [[InternalDefiner alloc] initWithFoo:4 andBar:5];
19    }
20    return self;
21}
22
23@end
24
25@interface InheritContainer : InternalDefiner
26@property (nonatomic, strong) NSMutableArray *filteredDataSource;
27-(id)init;
28@end
29
30@implementation InheritContainer
31
32-(id)init
33{
34    if (self = [super initWithFoo:2 andBar:3])
35    {
36        self.filteredDataSource = [NSMutableArray arrayWithObjects:@"hello", @"world", nil];
37    }
38    return self;
39}
40
41@end
42
43int main(int argc, const char * argv[])
44{
45    @autoreleasepool {
46        Container *j = [[Container alloc] init];
47        InheritContainer *k = [[InheritContainer alloc] init];
48
49        printf("ivar value = %u\n", (unsigned)j->_definer->foo); // breakpoint1
50        printf("ivar value = %u\n", (unsigned)k->foo);
51    }
52    return 0;
53}
54
55