xcode 局部声明隐藏实例变量警告
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8470502/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
local declaration hides instance variable warning
提问by susitha
local declaration hides instance variable message popup near "self.treatmentId = treatmentId;" and "self.treatmentName = treatmentName;";
本地声明隐藏了“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
回答by Littlejon
Change your code to the following.
将您的代码更改为以下内容。
@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
By declaring the local variable trentmentName
and treatmentId
you are essentially losing the ability to access the global (iVars) via their names.
通过声明局部变量trentmentName
,treatmentId
您实际上失去了通过名称访问全局变量(iVars) 的能力。
回答by Jamie
This error means that self.treatmentName and self.treatmentID have been declared previously so the local declaration is hiding the instance variables. If you simply change your init method to:
这个错误意味着 self.treatmentName 和 self.treatmentID 之前已经声明过,所以本地声明隐藏了实例变量。如果您只是将 init 方法更改为:
-(Treatment *)initWithtreatmentName:(NSString *)name treatmentId:(NSString *)identifiction
and your implementation of the method to reflect this, you'll find that the error should go away.
以及您对方法的实现以反映这一点,您会发现错误应该消失。