我已经问了一个类似的问题,但我仍然看不出问题?
-(id)initWithKeyPadType: (int)value { [self setKeyPadType:value]; self = [self init]; if( self != nil ) { //self.intKeyPadType = value; } return self; } - (id)init { NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease]; decimalSymbol = [formatter decimalSeparator]; ....
警告来自实例变量上方的行,而’self’未设置为'[(super或self)init …]的结果
解决方法
你要做的是技术上没问题,但在某个阶段你需要调用[super init].如果你的类的init方法执行了许多其他initWith …方法使用的常见初始化,那么将你的[super init]放在那里.此外,在尝试使用实例变量之前,始终确保已初始化该类.
- (id) initWithKeyPadType: (int)value { self = [self init]; // invoke common initialisation if( self != nil ) { [self setKeyPadType:value]; } return self; } - (id) init { self = [super init]; // invoke NSObject initialisation (or whoever superclass is) if (!self) return nil; NSNumberFormatter *formatter = [[[NSNumberFormatter alloc] init] autorelease]; decimalSymbol = [formatter decimalSeparator]; ...