objective-c – Cocoa Singletons and Protocols

objective-c – Cocoa Singletons and Protocols,第1张

概述我想定义一个协议并创建一种简单,标准的方法来获取所述协议的“默认”共享实现 – 单例样式.可可坚持以下模式: [NSUserDefaults standardUserDefaults][NSNotificationCenter defaultCenter] 但在这两种情况下,它们都在对象层次结构的底部有@interfaces.我正在努力使用@protocols来完成这项工作.我显然可以创建一个具 我想定义一个协议并创建一种简单,标准的方法来获取所述协议的“默认”共享实现 – 单例样式.可可坚持以下模式:

[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的类一样.

解决方法 这是一个想法:使用工厂方法创建您的协议和具有相同名称的类,该方法返回协议的默认实现:

@protocol ConfigurationManager <NSObject> ...@interface ConfigurationManager : NSObject <ConfigurationManager> +(ConfigurationManager *) defaultConfigurationManager;...

然后,其他专用实现可以从您的基类继承.

总结

以上是内存溢出为你收集整理的objective-c – Cocoa Singletons and Protocols全部内容,希望文章能够帮你解决objective-c – Cocoa Singletons and Protocols所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1001046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存