そのため、古い .cpp ファイルに機能を追加する必要があります。これは巨大です。したがって、Objective C で書き直すことはできません。代わりに、Objective-C を使用して必要な機能を追加しました (多くの NSDate/NSDateFormatter 関数が必要なため)。うまくいきました。しかし、(私のView Controllerで)ゲッターを呼び出すと、次のエラーが発生します:EXC_BAD_ACCESS。
コードの一部を次に示します。
//.h file -----------------
// C/C++ headers
#import <Foundation/NSDate.h>
#import <Foundation/NSDateFormatter.h>
namespace MySpace {
class Session {
private:
// C++ stuff
NSDate * startTime;
public:
// C++ stuff
NSDate * getStartTime();
Session(NSDate * startTime );
};
}
// .cpp file -----------------
using namespace MySpace;
Session:Session (NSDate * startTime) {
// unrelated code
if (startTime == nil ){
startTime = [NSDate date];
}
setStartTime( startTime);
// unrelated code
}
void Session::setStartTime( NSDate * startTime){
this->startTime = [startTime copy];
}
NSDate * Session::getStartTime() {
return this->startTime; // here I get the EXC_BAD_ACCESS
}
プロジェクト全体は、Objective-C++ および ARC 対応としてコンパイルされます。この問題は、メンバー 'startTime' が ARC によって解放され、getter を呼び出すと nil を指しているために発生していると思いますか?
どうすればこの問題を解決できますか?
ありがとう。