【问题标题】:How to share an object between two class methods [closed]如何在两个类方法之间共享对象[关闭]
【发布时间】:2011-04-20 09:11:57
【问题描述】:

我在方法 viewDidLoad: 中创建了一个对象。在我创建的另一个方法中,我想访问这个对象。

一种方法是在 h 文件中声明对象。

另一种方法是将其作为参数传递。

还有其他方法吗?

【问题讨论】:

  • 虽然下面的答案很有趣。如果不了解您正在尝试做什么,就很难回答。如果您只是想共享一些数据,您可能希望将您的共享类设为singleton

标签: objective-c cocoa-touch methods object sharing


【解决方案1】:

确实有很多选择。在不了解更多信息的情况下,我只会猜测您的问题最有可能的答案是使用单例。查找“单例设计模式”,因为这是您问题的最有可能的答案。

【讨论】:

    【解决方案2】:

    有很多方法可以做到这一点。这不是一份详尽的清单。

    • 作为参数传递

    • 声明一个全局

    • 贴在 NSThread 的+threadDictionary

    • 声明一个返回对象的类方法

    • 在实例变量中粘贴对对象的引用

    • 声明一个具有静态局部变量的函数或方法,该局部变量存储对象并返回它

    • 使用关联引用将其附加到某个随机对象,这两种方法都可以到达

    • 在已知地址映射一块内存并将引用写入页面的第一个字

    • 归档指向 NSUserDefaults 的指针并读回

    • 将指针或对象归档到文件系统中的文件并读回

    • 将地址绘制成图像并使用光学字符识别将其抓取回来

    如果没有更多细节,很难说哪个是最好的方法(除了说如果最后 4 个是正确的解决方案,我会非常惊讶)。


    一些补充:

    • 使用音频合成说出地址,使用语音识别读取地址(@chockenberry 说“你可以耳语以获得弱参考。”)

    • @boredzo 建议您模拟 Apple ][/C64 盒式接口

    • 在音频方面,最实用的可能是使用莫尔斯电码,因为它很容易识别

    • 您可能会使用推送通知,但是您必须依靠用户按下按钮来返回参考(假设 iOS)

    【讨论】:

    • 我实际上已经完成了 Apple II 盒式磁带的输出(但没有输入):bitbucket.org/boredzo/file-to-audio-file/wiki/Home 该协议包含一个标题,它应该使其易于识别——可能比摩尔斯电码更容易。跨度>
    • 您也可以通过NSNotification 发布对象,并让另一种方法成为通知的操作
    • 您可以通过一个简单的 API 调用连同一个主题标签将您想要保存的数据发布到 Twitter,然后为该主题标签设置一个 Twitter 搜索。点击该主题标签的 RSS 提要并阅读 RSS 有效负载的正文。你放在那里的数据应该会回来。不幸的是,您被限制为 140 个字符(减去标签长度)。对于更大的东西,我会在我的视图控制器中考虑一个实例变量。但这样做会很困难。
    • 如果您来自 JavaScript 背景,您可能会发现将存储隐藏在一对 getter/setter 闭包后面很方便。
    • twitter 解决方案不是个好主意,twitter 有时会离线,这意味着当 twitter 不工作时,您的应用程序将无法工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2016-04-18
    相关资源
    最近更新 更多