对象可以调用主应用程序吗?
Posted
技术标签:
【中文标题】对象可以调用主应用程序吗?【英文标题】:Can Objects Call the Main Application? 【发布时间】:2010-08-02 09:39:24 【问题描述】:请多多包涵,这对于专家来说可能是一个非常简单的问题,但我是该语言的新手。
我正在尝试创建一个动态生成和发布一系列视图的应用程序,这些视图显示在主窗口中。我遇到的问题是在它们之间进行交换。我希望每个视图都包含导致视图更改的按钮。我可以让视图自行关闭,但我不知道如何命令主程序在完成后将其自己的视图更改为新的视图(即从其子对象之一向主应用程序发送消息)。我想我可以将应用程序的主视图变成一个全局视图,但我宁愿能够直接联系主应用程序,因为这让我觉得有点整洁并且不太容易出现其他问题。问题是,我不知道主应用程序的标识符。方便的“self”标识符被使用得如此频繁,以至于我从未见过包含可以从外部调用的主应用程序标识符的代码 sn-p。能够将 NIB 文件对象直接链接到主程序共有的属性也很有用。
我是否以完全错误的方式处理这件事?是否有通用的“主应用程序”标识符?如果没有自动生成,是否可以创建一个?
-灰
【问题讨论】:
【参考方案1】:假设“主应用程序”是指您的应用程序委托,您可以使用 this method 获取它:
MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
【讨论】:
这真的不行,不知道为什么。必须有一些简单的方法从不同的视图控制器中向应用程序委托发送消息? 您是否在尝试访问的视图控制器中包含了应用程序委托文件?您是否通过appDelegate.myObject
访问过该对象?院长的方法是正确的
“不工作”是什么意思 - 它可以编译吗?运行应用程序时是否出现错误?它会崩溃吗?
啊哈哈哈,我想我明白这里出了什么问题!你看,在过去我研究过的目标语言中,你没有在他们的孩子中声明“父”对象的文件,因为它创建了一个循环引用。该语言会自动填补空白。我猜问题是我没有像 iWasRobbed 所说的那样包含正确的文件。我想我最好弄清楚如何做到这一点。这是从教程和帮助文件中学习时的问题;很难找到您想要的准确信息。
@ash 用于包含文件,通过在标题中使用 @class
(如果需要)和在 .m 文件中使用 #include 来打破循环包含。要中断循环引用,请对子对象使用@property (assign)
,对父对象使用@property (retain)
。以上是关于对象可以调用主应用程序吗?的主要内容,如果未能解决你的问题,请参考以下文章