Jam*_*ght 4 iphone objective-c
我正在研究一个iPhone教程(链接文本,它让我输入一些代码(在各种教程中几次)但它根本没有解释它.在这段代码中:
todoAppDelegate *appDelegate = (todoAppDelegate *)[[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)
什么是appDelegate?实例化结束时的"委托"意味着什么?实际上,整个事情意味着什么?(UIIapplication sharedApplication)?
我是一名.Net程序员,如果能帮助别人更好地解释它.我讨厌通过教程学习,因为我总是需要知道一切都做了什么,没有人解释一切.
Ale*_*lex 18
让我们回顾一下.
方括号([ ])是Objective-C的方法调用语法.因此,如果Cocoa具有C#语法,则等效语法为:
TodoAppDelegate appDelegate = UIApplication.sharedApplication.delegate;
Run Code Online (Sandbox Code Playgroud)
在C#中,您将为仅具有单个实例的类使用静态类.在Cocoa中,Singleton模式用于实现此目的.类方法(在本例中为sharedApplication)用于检索该类的单个实例.
Cocoa中的代表与delegateC#中的关键字不同,所以不要被它混淆.在C#中,您使用delegate关键字来引用方法.Cocoa中的委托模式是作为子类化的替代方法提供的.
许多对象允许您将另一个对象指定为委托.委托实现这些对象将调用的方法以通知它们某些事件.在这种情况下,UIApplication是表示当前正在运行的应用程序的类(System.Windows.Forms.Application例如,类似).当影响应用程序的事情发生时(例如,当应用程序启动,退出,获取或失去焦点等等)时,它会向其委托发送消息.
另一个Objective-C概念是protocol.它原则上类似于.NET interface,除了可以将方法标记为@optional,这意味着它们不需要实现以这种方式标记的方法.iPhone SDK中的代表只是符合特定协议的对象.在这种情况下UIApplication,协议代表必须符合UIApplicationDelegate.
因为不需要实现每个方法,所以这使代表可以灵活地决定哪些方法值得实现.例如,如果您希望在应用程序完成启动时执行某些操作,则可以实现符合UIApplicationDelegate协议的类,将其设置为UIApplication实例delegate,然后实现applicationDidFinishLaunching:.
UIApplication将确定其委托是否在应用程序完成启动时实现此方法,如果是,则调用该方法.这使您有机会在不必子类的情况下响应此事件UIApplication.
在iPhone应用程序中,开发人员还经常使用app delegate作为一种顶级对象.由于您通常不是子类UIApplication,因此大多数开发人员将其全局应用程序数据保存在应用程序委托中.
| 归档时间: |
|
| 查看次数: |
4943 次 |
| 最近记录: |