Ios 两个类,相同的属性名称,不同的类型->;被覆盖
我有以下设置:两个类,一个导入另一个,都有一个属性,恰好具有相同的名称,但类型不同Ios 两个类,相同的属性名称,不同的类型->;被覆盖,ios,xcode,class,overriding,instance-variables,Ios,Xcode,Class,Overriding,Instance Variables,我有以下设置:两个类,一个导入另一个,都有一个属性,恰好具有相同的名称,但类型不同 #import "ClazzA.h" @interface ClazzB : NSObject { UIColor* _someColor; } @property (nonatomic, strong) UIColor* someColor; 尝试访问ClazzB中的someColor属性时,出现错误: [[[ClazzB sharedInstance] someColor] CGColor]
#import "ClazzA.h"
@interface ClazzB : NSObject {
UIColor* _someColor;
}
@property (nonatomic, strong) UIColor* someColor;
尝试访问ClazzB中的someColor属性时,出现错误:
[[[ClazzB sharedInstance] someColor] CGColor]
错误:
“NSString”没有可见的@interface声明选择器“CGColor”
这个错误清楚地表明它从ClazzA那里拿走了财产,问题是为什么?有什么奇怪的名字被覆盖了吗
此处显示设置:
@interface ClazzA : NSObject {
@private
NSString* _someColor;
}
@property (nonatomic, copy) NSString* someColor;
ClazzB导入ClazzA,并具有名称相同但类型不同的属性
#import "ClazzA.h"
@interface ClazzB : NSObject {
UIColor* _someColor;
}
@property (nonatomic, strong) UIColor* someColor;
非常感谢您的帮助
谢谢 以上我要求您提供您的
sharedInstance
方法的共享声明,但我怀疑是这样的
+ (id)sharedInstance;
这就是问题的原因。在这种情况下,编译器不知道您将得到的确切类型,只为someColor
选择第一个匹配的选择器,该选择器返回NSString*
我建议将您的sharedInstance
methods声明更改为
+ (instancetype)sharedInstance;
或
我更喜欢
instancetype
方式。你能展示你的“sharedInstance”方法的声明吗?它是一个单例<代码>+(id)sharedInstance{static ClazzB*sharedMyManager=nil;静态分派一次\u t onceToken;分派一次(&onceToken,^{sharedMyManager=[[self alloc]init];});返回sharedMyManager;},如我在下面提到的。不要将id
用作此类方法的返回类型。