zoukankan      html  css  js  c++  java
  • IOS开发涉及有点概念&相关知识点

    前言,IOS是基于UNIX的,用C/C+/OC直通系统底层,不想android有个jvm。

    首先还是系统架构的分层架构

    1.核心操作系统层 Core OS,就是内存管理、文件系统、电源管理等

    2.核心服务层 Core Services,包含地址本,像集合、线程、网络、文件、数据库访问等都在这里,因为foundation就在这

    3.媒体层 Media,音频、视频、图形绘制及动画等

    4.可触摸层 Cocoa Touch,这个最主要可视化组件都在这里,oc开发大多也在这,UIKit就在这

    5.应用程序层 Appliction,就是App啦

    开发主体相关

    1.OC,还有c、c++,这个没啥说的,就是开发语言,这个在C语言OC语言区别归纳差不多(当然还有个复杂些的属性等,看什么时候在那边补充下)

    2.SDK,常用类库有Foundation(基本数据类型等都在里面)、UIKit(UI必用)等

    3.XCode,也没啥说的,就开发工具。里面集成了IB界面开发、Instrument性能及内存溢出排查等强大功能

    开发用到相关知识点及概念

    1.UI相关

    A.MVC开发模式、(委托)代理模式、通知机制(Notif&Apple Push)

    B.InterFace Builder,就是UI的集成开发工具

    C.StoryBorad,界面布局文件---独立开发建议使用,就是多个xib(运行时转成nib)一起,保存UIView界面相关联系信息

    D.UIKit,前面提到,包含系统自带控件视图,如基础的 UI(Button、TextField、Label、AlertView等),

    还有高级的UI(TableView、TabBar),各个ViewController,顺便说下UI中几个重要类

      1.UIApplication,启动时设置代理AppDelegate(里面有几个App生命周期)开启消息循环监听事件的

      2.UIView,所有开始控件基类,什么UIWindow、UIControl(如button、textField等的父类)等继承与他,常用addSubView等方法

      3.UIViewController(内部有个UIView),控制类基类,像TabBar,导航就继承与他;一般和xib对应,而里面的File‘s Ower可以认为就是Controller

    E.也说下启动机制:启动->加载配置->mian函数->UIApplicationMain->创建UIApplication(启动监听)

               ->加载UIWindow(一个)->调用Controller的makeKeyAndVisible去loadView(一次)&viewDidLoad->好像就没了

       当然加载(创建)视图也是有个独立判断过程,这里就不多做阐述。而里面还涉及两个文件:Info.plist,应用程序配置文件;还有个main.m,app入口函数文件;

      F.UI你还有个OI提下,如IBOutlet&IBAction,还有addTarget等; 特殊事件,如触摸、手势、键盘等

      G.手写界面,常用手动定位置形状的CG,常见几个属性区别

    1.frame:控制位置和大小,以父级视图的左上角为原点

    2.center:控制位置(中心点)

    3.bounds:控制大小,以自己的左上角为原点

      H.第三方框架,如Quartz-X(CaLayer、2D、自定义控件等)、CoraAnimation(核心动画)

        I.Bundle,这个也在UI里提下吧,是用来管理文件资源的东西。注:Android也有个Bundle,但是用来封装Activity之间要传递信息的。

    2.数据存储,MD,总算好像把UI部分涉及写完了下!

      A.文件存储,xml操作

      B.数据库sqlite及FMDB(第三方封装API)

      C.CoreData,就是个Orm,即DB互转OC对象,但性能、跨平台等问题

    3.网络

      A.NSUrlConntcion、NSUrlSession、CFNetWork、AFNetWorkting等的实用

      B.Http(ASI),ASIHttpRequest(get&post、同步&异步);webServices、Socket、(SB)Json&xml等等

      C.ICould(云技术)、推送push也该也算网络里,UIWebView应该也算吧?至于网络安全则也大体和web相同的。。

    4.多线程

      NSThread(RunLoop)、NSOperstion(子类)、线程池Queue,NSLock(@synchronized)、GCD(串并行、Dispatch)

    5.多媒体

      音频、视频、相机、录音,通话等,这些一般应用型也用不到(起码一期应该不会)

    一些冷门,我不搞他不清楚啊

    1.LBS开发,开发移动定位相关、MapKit、CoreLocation等

    2.沙箱机制,编译后的目录结构独立运行环境

    3.游戏开发,如Cocoad-x,Utility-3D等,哦还有个叫OpenGL的,挺高级的,不过我不搞的。。

    4.什么感应器,重力、热力等好像

     

    补充个UIView 切换&传值(摘自网上)

      1.切换:

        A.UITabBarController 视图都会进行初始化即使当前不显示在界面上,相对比较占用内存。

        B.UINavigationController 以栈的方式管理视图,各个视图的切换就是压栈和出栈操作,出栈后的视图会立即销毁。

        C.UIModalController 以模态窗口的形式管理视图,当前视图关闭前其他视图上的内容无法操作。

      2.传值: 

        A.采用代理模式

        B.采用iOS消息机制

        C.通过NSDefault存储(或者文件、数据库存储等)

        D.通过AppDelegate定义全局变量(或者使用UIApplication、定义一个单例类等)

        E.通过控制器属性传递

    PS,

    以上就是我所知道的,基本的IOS开发相关知识,应该大体也就这些了吧。。。细节例子网上N多,可自找~

    其实主要还是OC加UI,IOS最难应该还是OC,特别是排错能力、要求必须很理解OC。

    写完这又有兴致想写个Android 的先~因为Android和IOS开发知识结构很像,也是java语言+UI+网络+本地资源等等。

    晕思想跨度大大的。。。ok,写完吃饭去。。

    若转载,请注明@jiyilee.cnblogs.com 珍惜生活,努力工作!!!
  • 相关阅读:
    【DL-2-2】卷积神经网络(CNN)--AlexNet、ZFNet、VGGNet、GoogleNet、ResNet
    Python3 错误和异常-(try/except/else/finally/raise/assert)
    生成器 Generators
    Map,Filter 和 Reduce
    装饰器
    目标检测:介绍及传统方法
    【ML-17-2】MCMC--马尔可夫蒙特卡罗方法(MH和Gibbs)
    如何在JDK1.8中愉快地处理日期和时间
    luogu1447 能量采集
    luogu1775 古代人的难题 打表找规律
  • 原文地址:https://www.cnblogs.com/jiyilee/p/4926018.html
Copyright © 2011-2022 走看看