更改MGTwitterEngine的委托

我已经设置并使用扩展类MGTwitterEngine通过xAuth成功登录,我的问题是如果我想将它传递给另一个视图控制器,我该如何更改委托类,因为它是某种弱引用

@interface MGTwitterEngine : NSObject  { __weak NSObject  *_delegate; 

我最好把它包装成一个单独的类并且以这种方式传递,每次登录似乎有点过分,或者我错过了分享这个对象的一种非常明显的方式

目前我已经向MGTwitterEngine添加了一个setDelegate方法,但感觉好像我在不必要地对抗框架

如果您在多个对象之间共享引擎,那么您可能希望让其他对象/单例包装引擎并充当其唯一委托。 如果您已经完成了数据库编程,那么可以将其视为数据库连接 – 您可能不会让每个视图控制器创建自己的数据库连接。 相反,您将创建一些由视图共享的数据管理器对象,并可能抽象出一些DB内部。

如果不同的视图控制器处理不同的任务 – 例如登录,查找用户,查询消息等,那么包装器中的委托方法应该能够将响应传递给适当的视图控制器。

如果您有不同的视图控制器调用相同的方法(如果是,为什么?),您仍然可以将响应路由回相应的视图控制器。 正如MGTwitterEngine文档所说, “每个Twitter API方法都返回一个NSString,它是该连接的唯一标识符。” 您只需将对象(视图控制器)或块作为额外参数传递给每个包装方法。 当包装器发送响应时,您可以将twitter id字符串和此对象/块缓存在可变字典中,然后在处理响应时查找缓存中的连接ID。

实际上,你可以。 代表,只不过是MGTwitterEngine中的一个变量。 只需在下一个视图控制器中添加一个实例,添加正确的标头和inplementation调用。 在设置新视图控制器集后:

 nextViewController._mgTwitterEngine = self.mgTwitterEngine; nextViewController.mgTwitterEngine.delegate=nextViewController; 

然后调用nextViewController。 返回时,请不要忘记将委托设置回原始视图控制器(在viewDidAppear或viewWillAppear上)

希望有所帮助…祝您好运!

在委托中使用NSNotifications。

使视图控制器在您希望委托添加观察者的位置。 让MGTwitterEngine的委托方法发布通知。