zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    RecycleView使用心得【2】
    URL解析
    CSS 动画总结
    包含块 width 和 height 值的总结
    JS 获取页面大小
    常见跨域方法原理及其用例
    CSS 计数器
    JS 对象总结
    JS 原型以及原型链
    关于未能找到源文件“.NETFramework,Version=v4.0.AssemblyAttributes.cs”问题
  • 原文地址:https://www.cnblogs.com/loying/p/5176498.html
Copyright © 2011-2022 走看看