0

根据我之前的问题,在这里,我已经调整了我的数据控制器类以使用单例设计模式,以便我只能在多个视图中使用它一次。但是我确实有几个问题,我似乎也找不到解决方案。

首先,我不确定如何在两个视图中调用类/对象以使其工作,其次,我已经使用 + 将初始化方法设为全局,但我需要对每个方法都这样做吗?

为了共享数据,我希望能够跨视图共享的类的初始化是

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;
}

该类使用三个可变数组作为主要内容,需要在两个视图中设置和读取。

4

1 回答 1

2

如果我正确理解您的问题,我认为答案是:

  1. 你可以使用类似的东西:

    SpeecherDataController * localReference = [SpeecherDataController instance]; 
    

    然后:

    [localReference someMessage:param]; // or ...
    localReference.property = whatever; 
    
  2. 不,您的SpeecherDataController类上的方法也不需要成为类方法(即,它们不需要具有+前缀,-如果您想访问其中的 ivars,可以使用它们)。

注意:我认为您想[[self alloc] init];在.[[SpeecherDataController alloc] init];instance

(另外,请注意:我无法按照您的链接到上面的“此处”查看您之前的问题。所以,如果我误解了什么,我深表歉意。)

于 2012-07-24T04:18:17.033 回答