可以使用静态var和类方法来访问对象吗?

时间:2013-11-16 07:33:48

标签: objective-c

Objective-c中的OO编程是否可以使用类方法和静态变量的组合来访问对象的实例? (我相信这被称为单身人士?)

例如:

OverlayController.h
@interface OverlayController : NSObject
- (void)doSomething; //instance
+ (OverlayController*)controller; //class
@end

OverlayController.m
#import "OverlayController.h"  

static OverlayController *activeController;
@implementation OverlayController

- (void)show { //equivalent of init
    activeController = self;
}

- (void)doSomething {} //now have access to the object instance

+ (OverlayController*)controller {
    return activeController;
}

@end

现在可以使用OverlayController *controller = [OverlayController controller];

从任何上下文访问该对象

我之前没有遇到类似这样的事情,而且我发现的所有其他单例代码都使用了各种调度魔法来使事情正常工作所以我想知道使用这段代码是否会产生任何重大问题?

2 个答案:

答案 0 :(得分:0)

你在很大程度上回答了自己的问题。事实上,您所描述的代码结构有一个命名的设计模式,这意味着它完全可以接受OO编程。

嗯,我说完全可以接受,有些人不喜欢单身人士,但他们是有效的。

答案 1 :(得分:0)

你所描述的是辛格尔顿。

当您只允许对象的单个实例时,广泛使用且非常好的设计模式。

进一步阅读以下内容: