在编译几个将现有 Cocoa 类作为子类的类时,我收到 Xcode 警告。例如下面的类
@interface HMAttitude : CMAttitude
{
double pitch;
double roll;
double yaw;
}
@property (readwrite) double pitch;
@property (readwrite) double roll;
@property (readwrite) double yaw;
@end
-
@implementation HMAttitude
@synthesize pitch, roll, yaw;
- (id) init
{
return [super init];
}
@end
产生三个警告
警告:属性“偏航”及其超类“CMattitude”没有匹配的“原子”属性
警告:属性“pitch”及其超类“CMattitude”没有匹配的“原子”属性
警告:属性 'roll' 及其超类 'CMattitude' 没有匹配的 'atomic' 属性
为了创建能够像超类一样运行的 CMMotionManager 和 CLLocationManager 子类,所有相关子类都是必需的,仅从 csv 文件加载它们的数据。我对它们进行子类化的唯一原因是获得访问(或覆盖)它们的只读属性。如果无法设置这些属性,我将无法返回与真正的 CMMotionManager 和 CLLocationManager 类相同的对象。
目前,除了必须使用#pragma 忽略稍微困扰我的警告之外,一切正常。
有谁知道为什么会产生这个警告?鉴于属性未设置为非原子(原子是默认值),我完全不知道。
为了使这些属性是原子的,我需要明确做些什么吗?