ios - 关于swift中AppDelegage.swift文件的疑问
巴扎黑
巴扎黑 2017-04-17 14:38:56
[iOS讨论组]

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

巴扎黑
巴扎黑

全部回复(2)
PHPz

说起来有点长。
先说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。

阿神
  1. 控制反转(IoC): 不是你从main()开始写代码然后调用lib, 而是framework调用你写的代码. 作为进程入口的main()仍然存在, 但是是在框架里定义的, 不用你来写.

  2. 委托, 就是"把任务转交给别的class, 由别的class承担". 一个framework不能把所有行为写死, 总有些行为要由app开发者来定义. 你定义一个实现了特定protocol的class然后传进去, framework就会在需要的时候("app启动了" "收到Notification了")调用你的AppDelegate来处理.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号