3
内对象考虑:ARC/ObjC++:C++的ObjC容器
class SomeCppClass {
public:
SomeCppClass() {} ;
~SomeCppClass() {} ;
} ;
@interface Test1 : NSObject
- (id) init ;
@property (strong, nonatomic) NSMutableArray * container ;
@end
@implementation Test1
@synthesize container ;
- (id) init {
if (self = [super init]) {
container = [NSMutableArray arrayWithCapacity:10] ;
[container addObject:[NSValue valueWithPointer:new SomeCppClass()]] ;
}
return self ;
}
- (void) dealloc {
for (NSValue * v in container) {
SomeCppClass * c = (SomeCppClass *) [v pointerValue] ;
delete c ;
}
}
@end
这是正确的做法,删除C++的地面物体,当你与他们ARC下完成的?
感谢您的回答。你能否详细说明“更多灵活性”一点? – verec 2012-01-17 17:33:30
创建您自己的每个实例包装器可让您像处理ObjC对象一样处理C++对象。它可以让你把它放到集合中,而不用担心内存管理。它允许你从中获取ObjC类型(特别是'NSString')。我强烈建议保持ObjC和C++代码尽可能分离,只有一层薄薄的ObjC++来粘合它们。这些对象包装就是那个胶水。 – 2012-01-17 18:03:07