always self is not initialized before [super init]. We should check is correctly initialized.
if (self) {
...
} return self;