objective-c – Obj-,’self’时使用的实例变量未设置为'[(super或self)init …]的结果

前端之家收集整理的这篇文章主要介绍了objective-c – Obj-,’self’时使用的实例变量未设置为'[(super或self)init …]的结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经问了一个类似的问题,但我仍然看不出问题?

-(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];

    ...

猜你在找的Xcode相关文章