(iphone) 可以为 C++ 类/结构定义 @property 吗?

eug*_*ene 5 c++ iphone objective-c

我正在混合 c++ 和 objectc。
特别是,我向 object-c 标头添加了一个 C++ 类/结构变量,这是否合法?

例如,

@interface MyView : UIView
{
   MyCppClass  cppVariable;
}

@property (nonatomic, assign) MyCppClass cppVariable;
@end
Run Code Online (Sandbox Code Playgroud)

并在实现文件中,@synthesize cppVariable;以及。

Yuj*_*uji 4

正如Objective-C++ 官方文档中所述,您可以在 Objective-C 类中拥有非指针 C++ 对象。-fobjc-call-cxx-cdtors如果您使用GCC / clang 中的选项,它们将被正确构造和破坏。

@sythesiz由于缺乏文档,非指针 C++的情况@property不太清楚。该行为有时取决于所使用的编译器,正如在这个SO问题中所讨论的那样。Clang 团队正在尝试实现正确的事情,但我认为目前还无法实现。

因此,如果您愿意,请坚持使用指向 C++ 类的指针@synthesize。否则,实现您自己的 setter 和 getter。