为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

说起来有点长。
先说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-04-10
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

控制反转(IoC):不是你从main()开始写代码然后调用lib,而是framework调用你写的代码.作为进程入口的main()仍然存在,但是是在框架里定义的,不用你来写.
委托,就是"把任务转交给别的class,由别的class承担".一个framework不能把所有行为写死,总有些行为要由app开发者来定义.你定义一个实现了特定protocol的class然后传进去,framework就会在需要的时候("app启动了""收到Notification了")调用你的AppDelegate来处理.
                            
查看完整回答
反对 回复 2019-04-10
  • 2 回答
  • 0 关注
  • 314 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信