【发布时间】:2014-12-13 15:16:40
【问题描述】:
我有以下设置:两个类,一个导入另一个,两者都有一个属性恰好具有相同的名称但类型不同。
当我尝试访问 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 { static ClazzB *sharedMyManager = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ sharedMyManager = [[self alloc] init]; }); return sharedMyManager; } -
如下所述。不要使用
id作为此类方法的返回类型。
标签: ios xcode class overriding instance-variables