ios的基础知识

1、objective-c 是一种 “消息结构”语言(message structure)【由smalltalk演化而来,smalltalk 是消息的鼻祖】, 而不是“函数调用”(function calling)
区别是:
消息结构的语言:
(1)运行执行的代码是由运行环境所决定的;
(2)“总是”在运行时查找要执行的方法(编译器甚至不关心接受的对象是何种类型,编译器甚至不关心接受消息的对象是何种类型,接受消息的对象问题也要在运行时处理,这个过程叫做“动态绑定”);
函数调用的语言:
(1)由编译器决定的;
(2)调用的多态的函数,在运行时就要按照“虚方法表(virtual table)”来查找到底应该执行哪个函数实现(不是多态的时候,不需要);

多态性的定义是:同一操作作用于不同的类的实例,将产生不同的执行结果,即不同类的对象收到相同的消息时,得到不同的结果。
静态绑定:[static binding](c语言的调用方式)编译器就能够决定运行时所应调用的函数;
动态绑定:[dynamic binding] (oc语言的调用方式),在运行时才确定调用的函数;

??? 解释型语言、运行时语言、编译语言(全两者是动态绑定、后者是静态绑定)
我们的OC和Swift都是需要先进行编译后才能执行代码功能的,因此他们都是编译型语言。
所以,OC 是编译行且运行时编程语言;
运行期编程语言的优势;OC 主要工作是由“运行期组件[runtime component]” 来完成工作而不是编译器;OC的面向对象特性所需要的全部数据结构以及函数都是在运行期组件里面,含有所有的内存管理方法;它相当于一个动态库,将程序代码粘合起来,这样值需要更新运行期的组件,就可以提升性能; 而编译型语言则需要重新编译;

c/c++ 都是经过malloc进行分配,free进行释放; oc是通过引用计数来管理;

oc里面的对象类型: 栈帧 ——堆内存分配建立关系;【内存实际在堆】
非*对象类型的(eg:CGRect是c类型),内存在“栈”空间。因为对象消耗比较多,所以int,float,double.char非对象类型的,都是使用CGRect这种结构;

参考链接:
https://www.cnblogs.com/zhoug2020/p/5972262.html
https://blog.csdn.net/a12041543/article/details/51673012

2、基本的修饰关键词
asign、strong、weak,copy等

3、APNS(apple push notification serviser) 推动通知;


ios的基础知识_第1张图片
推送的通知过程

4、block的理解你 (循环应用问题)

5、指针使用

6、进程、线程、队列

7、音视频播放的内容

8、oc的反射机制

9、UIView的渲染在何时调用

10、沙盒目录

你可能感兴趣的:(ios的基础知识)