c语言中,程序是从main函数开始执行的,swift中并没有找到类似的main函数一样的东西,程序好像是从AppDelegate.swift中开始的,但是不明白是怎么运行的,希望小伙伴们能指点一二(ps:没学过oc,希望不要从oc的角度解释=。=)
还有,委托模式又是个什么东西-。-
iOS程序/App的起点应该是main.m中的int main方法,里面使用了UIApplicationMain方法,传入AppDelegate类名,内部肯定是根据类名创建了Delegate对象。在Swift没找到main.m的原因目测是苹果在编译时自动生成了该方法,估计你也可以自己创建一个也可以。
委托模式,简单理解就是有些事A不知道怎么实现,但B知道,所以A持有了B对象,在合适的时间点调用B对应的方法。
说起来有点长。
先说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。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。