Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 两个类,相同的属性名称,不同的类型->;被覆盖_Ios_Xcode_Class_Overriding_Instance Variables - Fatal编程技术网

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
用作此类方法的返回类型。