所以,我必须在旧的 .cpp 文件中添加一个功能。它很大。所以用Objective C重写它不是一种选择。相反,我使用 Objective-C 添加了必要的功能(因为我需要很多 NSDate/NSDateFormatter 函数)。它工作得很好。但是,当调用 getter(在我的视图控制器上)时,我收到此错误: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。我相信这个问题是因为ARC释放了成员'startTime',并且当我调用getter时,它指向nil?
我该如何解决这个问题?
谢谢。