我有代码段,
就是这样......
#import <sqlite3.h>
@interface DatabaseClass : NSObject {
sqlite3 *database;
}
@property ( nonatomic, retain ) database;//////this//////
@end
In the implementation file;
#import "DatabaseClass.h"
@implementation DatabaseClass
@synthesize database;//////this///////
@end
我的问题是我可以这样做吗(注释事项)。如果不是什么工作?
答案 0 :(得分:5)
经验测试表明
@property (nonatomic, retain) database;
不起作用(具体来说,不编译)。然而,
@property (nonatomic, assign) sqlite3 *database;
确实
答案 1 :(得分:4)
代码存在两个问题。
首先,声明不正确;
@property ( nonatomic, retain ) database;
编译它会生成类似以下内容的错误消息:
error: expected specifier-qualifier-list before 'database'
代码缺少类型说明符。特别是,它应该看起来像:
@property ( nonatomic, retain ) sqlite3 *database;
现在,经过修复后,你会看到错误,因为kevindtimm也是如此:
error: property 'database' with 'retain' attribute must be of object type
将@property更改为assign
而不是retain
。
或者,更好的是,使用核心数据。除非您从设置了架构的其他源中获得SQLite数据库,否则直接转到SQLite会浪费工程时间。
答案 2 :(得分:3)
您不能这样做,因为sqlite3不是Objective C对象。保留的属性必须是客观的C对象。一个简单的方法就是Objective C对象是类型名称通常在CamelCase中。
sqlite3数据库句柄只是指向普通C结构的指针。您可以将其设为已分配的属性,但这意味着如果为属性分配另一个值,则不会自动关闭连接。要为它分配属性,你可以这样做:
@property ( nonatomic, assign ) database;
您还想考虑是否真的想以这种方式做事。以下是两个建议: