質問があります:
私はC++インスタンスを明示的に「new
」および「」しませんが、objective-cクラスが初期化されると自動的に「 」および「」を呼び出します。何か案が?delete
new
delete
class myCppTestClass
{
public:
myCppTestClass()
{
NSLog(@"MyCpp constructor");
}
~myCppTestClass()
{
NSLog(@"MyCpp destructor");
}
};
@interface MyTestClass : NSObject
{
myCppTestClass myCppInstance;
}
@end
@implementation MyTestClass
@end
そして私はそれをこのように呼びます:
NSLog(@"Create an object.");
MyTestClass *objcObject = [[MyTestClass alloc] init];
NSLog(@"Object created");
[objcObject release];
objcObject = nil;
NSLog(@"Object released.");
次に、それを実行します。ログは次のようになります。
2012-11-16 12:01:18.747 iOSVersion[87248:f803] Create an object.
2012-11-16 12:01:18.749 iOSVersion[87248:f803] MyCpp constructor
2012-11-16 12:01:18.750 iOSVersion[87248:f803] Object created
2012-11-16 12:01:18.751 iOSVersion[87248:f803] MyCpp destructor
2012-11-16 12:01:18.752 iOSVersion[87248:f803] Object released.
自動参照カウンティングについてではありません。閉じているので、何かアイデアはありますか?どうもありがとう。
繰り返しますが、MyTestClassがこのような場合、コンストラクタとデストラクタは呼び出されません。
@interface MyTestClass : NSObject
{
myCppTestClass * myCppInstance;
}
およびログ:
2012-11-16 12:22:38.710 iOSVersion[87428:f803] Create an object.
2012-11-16 12:22:38.711 iOSVersion[87428:f803] Object created
2012-11-16 12:22:38.712 iOSVersion[87428:f803] Object released.