根据我之前的问题,在这里,我已经将我的Data Controller类调整为使用单例设计模式,这样我就只能在多个视图中使用一次。然而,我确实有几个问题,我似乎也找不到解决方案。
首先,我不确定如何在两个视图中调用类/对象以使其工作,其次,我已经用+使初始化方法全局化,但我需要对每个方法都这样做吗?
为了共享数据,我希望能够在视图之间共享的类的初始化是
static SpeecherDataController *_instance = nil; // <-- important
+(SpeecherDataController *)instance
{
// skip everything
if(_instance) return _instance;
// Singleton
@synchronized([SpeecherDataController class])
{
if(!_instance)
{
_instance = [[self alloc] init];
// NSLog(@"Creating global instance!"); <-- You should see this once only in your program
}
return _instance;
}
return nil;
}
该类使用三个可变数组作为主要内容,需要在两个视图中设置和读取这三个数组。
如果我正确理解你的问题,我想答案是:
-
你可以使用类似的东西:
SpeecherDataController * localReference = [SpeecherDataController instance];
然后:
[localReference someMessage:param]; // or ... localReference.property = whatever;
-
不,
SpeecherDataController
类上的方法也不需要成为类方法(即,它们不需要有+
前缀,如果您想访问其中的ivar,它们可以使用-
)。
注意:我认为您希望在instance
的实现中用[[SpeecherDataController alloc] init];
替换[[self alloc] init];
。
(另外,请注意:我无法按照您的链接到上面的"此处"查看您之前的问题。因此,如果我误解了什么,我很抱歉。)