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,工厂模式

六大原则:

    • 单一职责

    • 接口隔离

    • 里氏替换

    • 依赖倒置

    • 迪米特

    • 开放封闭

 
设计模式
1,单一职责原则:一个类只负责一个职责。
 
2,里氏替换原则:现有父类P,有功能A。子类C继承父类P。那么所有用到父类A功能的地方,都应该能用C替换。
子类可以扩展父类的功能,但是不能改变父类原有的功能。
 
3,依赖倒置原则:高层模块不应该依赖低层模块,都应该依赖细节;抽象不应该依赖细节;细节应该依赖抽象。
例子:假如有模块A(高层,负责复杂的业务逻辑)和模块B(低层,负责基本的原子操作)。
现在有两个问题:
a,模块B的实现要修改,此时因为模块A依赖B,需要修改A;
b,新增模块C来替代,此时因为模块A依赖B,需要修改A;
解决方案:
将A修改为依赖接口I,模块B、C各自实现接口I,A通过接口I与B、C发生联系。
中心思想是面对接口编程。
 
4,接口隔离原则:模块不应该依赖不需要的接口;一个模块对另外一个模块的依赖应该建立在最小的接口上。
 
5,迪米特法则:一个对象应该对其他对象保持最少的了解。
又叫最少知道原则。
 
6,开放封闭原则:一个对象应该对扩展开放,对修改封闭。 
 

六、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

原文地址:https://www.cnblogs.com/loying/p/5176498.html