我有一个名为playbackhelper的单例类,我想添加一个成员,它是一个viewcontroller的引用。但我不认为我可以使该成员成为参考,因为我希望能够更改我链接到哪个控制器,并且我不认为这可以通过引用。
这是我的控制者:
@interface InstrumentGridViewController : UIViewController {
}
-(void) someMethod;
@end
这是我的单例类,我想要一个成员,它是指向控制器的某种指针。
class PlaybackHelper{
private:
// Singleton methods
PlaybackHelper();
PlaybackHelper(PlaybackHelper const&);
void operator=(PlaybackHelper const&);
public:
static PlaybackHelper &getInstance();
// ((((some InstrumentGridViewController member here))))
InstrumentGridViewController controllerMember;
}
所以我的问题是:如何将这些链接相互链接/如何创建指向控制器的成员以及如何初始化它?
编辑:基本上我希望能够从单例类中调用控制器方法,如下所示:
[PlaybackHelper::getInstance().controllerMember someMethod];
但我不知道如何设置我的单身人士才能实现这一目标。现在在{1}}示例中设置它的方式将是控制器对象的副本,这不是我想要的。
答案 0 :(得分:0)
关于单例使用的争论不谈,如果你使用ARC,你可以在C ++类中轻松使用ObjC对象,并且可以处理内存管理。
如果你想让它成为一个访问者......
class PlaybackHelper{
private:
// ... other stuff...
InstrumentGridViewController *_instrumentGridViewController;
public:
InstrumentGridViewController *controllerMember() {
return _instrumentGridViewController;
}
};
[PlaybackHelper::getInstance().controllerMember() someMethod];
如果您只是想让它成为公共会员......
class PlaybackHelper{
public:
InstrumentGridViewController *controllerMember;
};
[PlaybackHelper::getInstance().controllerMember someMethod];
ObjC对象被识别为具有非平凡的ctor / dtor,编译器将自动处理ARC的内容。
LLVM + ARC + C ++可以轻松地将ObjC对象与C ++混合使用。事实上,你可以做到这一点而不用担心......
std::vector<UIView*> listOfViews;
所有内存管理都由编译器神奇地安排。