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: