开发者社区> 问答> 正文

关于swift中AppDelegage.swift文件的疑问

c语言中,程序是从main函数开始执行的,swift中并没有找到类似的main函数一样的东西,程序好像是从AppDelegate.swift中开始的,但是不明白是怎么运行的,希望小伙伴们能指点一二(ps:没学过oc,希望不要从oc的角度解释=。=)
还有,委托模式又是个什么东西-。-

展开
收起
a123456678 2016-07-28 12:23:34 1873 0
2 条回答
写回答
取消 提交回答
  • 宇宙虽有其起源,却没有终结。无限。 星球虽也有起源,却因其自身之力走向毁灭。有限。

    iOS程序/App的起点应该是main.m中的int main方法,里面使用了UIApplicationMain方法,传入AppDelegate类名,内部肯定是根据类名创建了Delegate对象。在Swift没找到main.m的原因目测是苹果在编译时自动生成了该方法,估计你也可以自己创建一个也可以。

    委托模式,简单理解就是有些事A不知道怎么实现,但B知道,所以A持有了B对象,在合适的时间点调用B对应的方法。

    2019-07-17 20:01:22
    赞同 展开评论 打赏
  • 说起来有点长。
    先说Delegate,这是一个OO中的概念,调用一个对象的成员函数在OO中的术语是给这个对象发送消息,对象接收到一个消息时可以选择自己处理掉,或者将这个消息转发给另外一个对象,转发到的那个对象就被称之为delegate。
    Cocoa程序在启动的时候,runtime会给每个app创建一个NSApplication对象实例,NSApplication对象会接收到Cocoa框架发送来的一些消息,比如告诉它程序已经启动或者用户想要退出等,但NSApplication对象并不亲自处理这个消息,因为每个程序拥有的NSApplication对象都是一样的,但每个程序对于这些消息的处理方式却不一样,所以NSApplication对象让你指定一个Delegate对象来处理这些消息,以得到你想要的结果。
    AppDelegate.swift中定义了一个class,这个class的实例对象就是这个程序中NSApplication的delegate。这个实例对象的创建是由Cocoa框架做的。
    当然你可以在一个程序里建立不止一个NSApplicationDelegate的子类,也可以创建不止一个NSApplicationDelegate对象,但你的App里定义了一个xib文件,这个xib文件中指定了Cocoa到底应该创建哪个类的实例作为全局NSApplication对象的delegate。

    2019-07-17 20:01:22
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关课程

更多

相关电子书

更多
OpenStack Swift 海量小文件优化之路 立即下载
From Java/Android to Swift iOS 立即下载
Swift在Airbnb的应用实践 立即下载