В @interface
, у меня есть заявление:Как инициализировать переменную класса Objective C в init?
@interface myClass {
NSDictionary * myData;
}
@property (nonatomic, assign) NSDictionary * data;
+ (id) initWithData:(NSDictionary *)data;
@end
В @implementation
, у меня есть этот код:
@implementation
@synthesize data;
+ (id) initWithData:(NSDictionary *)freshData {
self = [super init];
if (self) {
self->data = freshData;
}
return self;
}
@end
Но я получил ошибку Incomplete definition of type 'struct objc_class
на self->data
.
Если изменить его в self.data
, я получил ошибку Member reference type 'struct objc_class *' is a pointer; did you mean to use '->'?
Если удалить self
, я получил доступ к ошибке `экземпляра переменной«данные»в методе класса.
Но если я изменяю тип метода от +
(метод класса) до -
(метод экземпляра), я не могу получить доступ к init.
И я не могу исправить эту ошибку, изменив назначение с data
на myData
.
Как мне создать конструктор?
Ссылка, которую я узнал из (но не помогает), являются:
Если я только реализую '- (instancetype) initWithData: (NSDictionary *) freshData' без' + (id) initWithData: (NSDictionary *) freshData', в чем же проблема? –
Ну, вы также можете это сделать, если нет проблемы с созданием объекта этого класса, так как с помощью метода экземпляра вам нужно создать объект этого класса для использования этого метода и с помощью метода класса вы можете вызвать этот метод с помощью класса. – Rajat
Проверьте это также на метод класса vs instance method - http: // stackoverflow.com/questions/1053592/what-is-the-difference-between-class-and-instance-methods – Rajat