首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改MGTwitterEngine的委托

更改MGTwitterEngine的委托
EN

Stack Overflow用户
提问于 2010-06-02 18:37:28
回答 3查看 1K关注 0票数 5

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

代码语言:javascript
复制
@interface MGTwitterEngine : NSObject <MGTwitterParserDelegate> {
__weak NSObject <MGTwitterEngineDelegate> *_delegate;

我是不是最好把它包装成一个单例类并以这种方式传递,似乎每次登录都有点夸张,还是我错过了一种艰难而显而易见的共享这个对象的方式

目前,我已经向MGTwitterEngine添加了一个setDelegate方法,但感觉好像是在与框架进行不必要的斗争

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-09 14:13:21

如果您在多个对象之间共享引擎,那么您可能希望有其他一些对象/单例来包装引擎,并充当其唯一的代理。如果您已经进行过数据库编程,那么可以将其视为一个数据库连接--您可能不会让每个视图控制器创建自己的数据库连接。相反,您将创建某种数据管理器对象,该对象由视图共享,并可能抽象出一些DB内部结构。

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

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

票数 6
EN

Stack Overflow用户

发布于 2011-05-06 03:59:02

实际上,你可以的。委托只是MGTwitterEngine中的一个变量。只需在下一个视图控制器中添加它的一个实例,添加适当的头和实现调用。在实例化新的视图控制器集之后:

代码语言:javascript
复制
nextViewController._mgTwitterEngine = self.mgTwitterEngine;
nextViewController.mgTwitterEngine.delegate=nextViewController;

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

希望这能帮上忙。祝你好运!

票数 2
EN

Stack Overflow用户

发布于 2012-07-20 09:42:21

在代理中使用NSNotifications。

在您希望代理的位置创建视图控制器,添加一个观察者。让MGTwitterEngine的委托方法发布通知。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2956852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档