0

When i use FMDB test demo in xcode4.2, everything is good. But when I run the demo in xcode 3.2.6, it gives the error:"unknown property attribute 'atomic'"

        __unsafe_unretained id _delegate;

    NSUInteger          _maximumNumberOfDatabasesToCreate;
}

@property (atomic, retain) NSString *path;
@property (atomic, assign) id delegate;
@property (atomic, assign) NSUInteger maximumNumberOfDatabasesToCreate;

How can I fix this error ?

4

3 回答 3

1

据我记得只有 clang 支持的“原子”属性。使用 gcc 时,每个未声明为“非原子”的属性默认为“原子”。

于 2013-01-23T15:11:01.690 回答
0

atomic__unsafe_unretained在 LLVM 3.0 中引入。如果您使用的是 Xcode 3.2.6,则您使用的是不支持这些关键字的旧版本的编译器。

您可以安全地删除atomic关键字,因为默认情况下属性是原子的;还有 remove __unsafe_unretained,因为它大致相当于assign在属性声明中。

于 2013-01-23T15:11:50.347 回答
0

您可以使用Clang 的预处理器宏来确定atomic在您的编译器中是否可用。如果atomic不支持该关键字,则省略它应该是安全的,因为无论如何 atomic 都是隐式行为。

#if __has_feature(objc_atomic)
@property (atomic, retain) NSString *path;
@property (atomic, assign) id delegate;
@property (atomic, assign) NSUInteger maximumNumberOfDatabasesToCreate;
#else
@property (retain) NSString *path;
@property (assign) id delegate;
@property (assign) NSUInteger maximumNumberOfDatabasesToCreate;
#endif
于 2014-03-06T23:13:43.767 回答