In the @interface, I have this declaration:
@interface myClass {
   NSDictionary * myData;
}
@property (nonatomic, assign) NSDictionary * data;
+ (id) initWithData:(NSDictionary *)data;
@end
In the @implementation, I have this code:
@implementation
@synthesize data;
+ (id) initWithData:(NSDictionary *)freshData {
    self = [super init];
    if (self) {
        self->data = freshData;
    }
    return self;
}
@end
But I got error Incomplete definition of type 'struct objc_class on self->data.
If I change it into self.data, I got error Member reference type 'struct objc_class *' is a pointer; did you mean to use '->'?
If I remove the self, I got error `Instance variable 'data' accessed in class method.'
But if I change the method type from + (class method) to - (instance method), I cannot access the init.
And I cannot fix this error by change the assignment from data to myData either.
How should I make a constructor?
The link that I have learned from (but not helping) are:
 
     
     
     
    