本地声明隐藏实例变量警告

3

局部声明隐藏了实例变量消息弹出窗口靠近"self.treatmentId = treatmentId;"和"self.treatmentName = treatmentName;"

@implementation Treatment

@synthesize treatmentId;
@synthesize treatmentName;

-(Treatment *)initWithtreatmentName:(NSString *)treatmentName treatmentId:(NSString *)treatmentId{


    if((self = [super init])){
        self.treatmentId = treatmentId;
        self.treatmentName = treatmentName;
    }

    return self;

 }

@end

在initWithtreatmentName方法中更改第一个参数的名称。 - Narayana Rao Routhu
将下面的方法进行修改,将-(Treatment *)initWithtreatmentName:(NSString *)treatmentName treatmentId:(NSString *)treatmentId 改为 -(Treatment *)initWithtreatmentName:(NSString *)otreatmentName treatmentId:(NSString *)otreatmentId。您的实例名称和参数名称相同,因此会出现警告。 - ajay
2个回答

9
将您的代码更改为以下内容。
@implementation Treatment

@synthesize treatmentId;
@synthesize treatmentName;

-(Treatment *)initWithtreatmentName:(NSString *)newTreatmentName treatmentId:(NSString  *)newTreatmentId{


    if((self = [super init])){
        self.treatmentId = newTreatmentId;
        self.treatmentName = newTreatmentName;
    }

    return self;

 }

@end

通过声明本地变量trentmentNametreatmentId,你基本上失去了通过它们的名称访问全局变量(iVars)的能力。


0

这个错误意味着self.treatmentName和self.treatmentID已经被先前声明,所以局部声明正在隐藏实例变量。如果你只是改变你的init方法为:

-(Treatment *)initWithtreatmentName:(NSString *)name treatmentId:(NSString *)identifiction

如果您按照这种方式实现方法,您会发现错误应该消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接