iOS 基础知识
一、Objective-C语言特性有哪些?
1,c语言的超集,可以混编c和c++代码。(Objective-C++) 参考:http://blog.csdn.net/fengsh998/article/details/8010696
2,oc的方法调用为消息传递模型(用[]表示)。
3,单继承。不支持内联、操作符重载、多继承。
4,Category。在不继承的基础上进行扩展,同时还可以对功能进行分组。
5,运行时机制:method_setImplementation打补丁、ISA指针、objc_msgSend函数、Method Swizzling、IMP、Method。
objective-c 的缺点:不支持命名空间、操作符重载和多重继承,动态运行时机制导致函数调用不能进行编译时优化(内联函数),运行时需要动态寻找函数,性能较低(虽然有缓存)。
优点:
Category。
Posing(冒充),class_poseAs: deprecated in favor of categories and method_setImplementation。
动态识别 :isKindOfClass。
指针
消息机制
OC和C++混编。
总结就是运行时机制 还有就是 混编。
二、界面开发
1,方式:storyboard、xib、手写;
2,自适应与界面统一:autolayout、sizeClass、Image Asset;
三、网络模型选择
iOS网络结构:
1,Cocoa层:NSURL、Webkit
2,Core Foundation层:CFNetwork 和 CFNetServices
3,OS层:基于 C 的 BSD socket
四、多线程
RunLoop(RunLoopMode)、同步和异步队列、GCD、NSOperationQueue、NSThread、线程通信、线程调度(NSLock)
五、设计模式
1,代理模式
2,观察者模式
3,单例模式
4,生产、消费者模式
5,工厂模式
六大原则:
-
单一职责
-
接口隔离
-
里氏替换
-
依赖倒置
-
迪米特
-
开放封闭
六、iOS内存管理
autorelease ,ARC 和非ARC
关键词:引用计数、ARC、循环引用、CoreFoudation对象
七、数据结构
八、算法基础
常见算法:
1, 8大排序算法
2,二叉树实现
3,二分查找实现
4,最短路
5,最小生成树
常用数据结构:
1,数组、链表;
2,树:二叉树;
3,图:有向图、无向图;
ACM用算法:
2-sat;
RMQ、二维RMQ;
割点(tarjan)、强连通分量、网络流(dinic)、最大匹配(KM算法);
后缀数组、后缀自动机、AC自动机;
九、TCP/IP 与 无线通讯
1,HTTP
2,TCP/IP
3,UDP (AsyncUdpSocket)
网络七层由下往上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
http协议 对应于应用层
tcp协议 对应于传输层
ip协议 对应于网络层
HTTP协议是基于TCP连接的。
三次握手:
第一次,客户端发送SYN包,进入SYN_SEND状态;
第二次,服务器返回ACK(SYN+1)和SYNserver包,进入SYN_RECV状态;
第三次,客户端发送ACK(SYNserver+1)包,进入ESTABLISHED状态;
在socket编程中,客户端执行connect()时。将触发三次握手。
十、扩展部分
1,OpenGL ES。
参考:
① http://www.mamicode.com/info-detail-877996.html
② http://www.kuqin.com/shuoit/20150308/345099.html
③ http://www.cnblogs.com/kesalin/archive/2011/09/15/cocoa_bonjour.html