0

我正在利用空闲时间玩Objective C。我正在阅读有关Protocols的内容,但我担心我可能用错了,考虑到我使用它的方式与我使用的方式相同(至少几乎相同,呵呵) C# 代码。

所以,这就是我得到的。我有一个协议,一个类管理器来弱耦合我的视图和两个实现该协议的视图。

@protocol IView <NSObject>
- (void) loadViewToScreen;
@end

@interface ViewManager : NSObject

@property (atomic, weak) id<IView> document;
@property (atomic, weak) id<IView> browser;

//Singleton
+ (id) getInstance;
@end

然后我将一种观点称为彼此的观点。

ViewManager *vm = [ViewManager getInstance];
[vm.browser loadViewToScreen];

我对将视图加载到屏幕的最佳方式不感兴趣。它只是一个测试协议的模拟代码。

我无法让经理使用指向协议的指针。所以我担心我会得到视图副本。我做对了吗?

谢谢,卢卡斯

4

1 回答 1

1

协议,concpetually,只是对象或类的类型的一部分。您无法获得指向协议的指针。(嗯,实际上你可以获得一个协议对象,但那是运行时模拟,这似乎不是你想要的)。

不过,不要害怕获得副本。除非您复制对象或将其分配给复制属性,否则您将获得指向同一实例的指针。

于 2013-03-20T14:32:20.863 回答