我正在混合使用c ++和objectc 特别是,我正在向object-c头添加一个c ++类/ struct变量,如果这是合法的?
例如,
@interface MyView : UIView
{
MyCppClass cppVariable;
}
@property (nonatomic, assign) MyCppClass cppVariable;
@end
在实现文件中,@ synthesize cppVariable;同样。
答案 0 :(得分:4)
如this official document on Objective-C++中所述,可以在Objective-C类中包含非指针C ++对象。如果您在GCC / clang中使用选项-fobjc-call-cxx-cdtors
,则会正确构造和销毁它们。
@sythesiz
非指针C ++ @property
的情况并不明确,因为缺少文档。行为有时取决于所使用的编译器,如所讨论的那样。在this SO question。 Clang团队正在努力实现正确的事情,但我认为现在还没有。
因此,如果你想@synthesize
,请坚持使用指向C ++类的指针。否则,实现自己的setter和getter。