我想定义一个协议并创建一种简单,标准的方法来获取所述协议的“默认”共享实现 – 单例样式.可可坚持以下模式:
[NSUserDefaults standardUserDefaults] [NSNotificationCenter defaultCenter]
但在这两种情况下,它们都在对象层次结构的底部有@interfaces.我正在努力使用@protocols来完成这项工作.我显然可以创建一个具有空或简单方法实现的类 – 但实际上,我想要的是层次结构底部的@protocol.我尝试过类似的东西:
@protocol ConfigurationManager <NSObject> //... @interface ConfigurationManagerFactory : NSObject + (id<ConfigurationManager>)sharedConfiguration; @end // ... id<ConfigurationManger> config = [ConfigurationManagerFactory sharedConfiguration]; [config ...];
它有效 – 但我总是要解释如何使用它以及为什么我这样做.有没有办法符合Cocoa的语法(调用约定),同时仍然利用@protocols的值?
顺便说一下,有没有理由我不想像这样使用@protocols?实现@interface仍然可以利用类别和替代实现等 – 就像实例化NSString通常会留下一个扩展NSString的类一样.