前言,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,写完吃饭去。。

IOS开发涉及有点概念&相关知识点的更多相关文章

  1. Android开发涉及有点概念&相关知识点(待写)

    前言,承接之前的 IOS开发涉及有点概念&相关知识点,这次归纳的是Android开发相关,好废话不说了.. 先声明下,Android开发涉及概念比IOS杂很多,可能有很多都题不到的.. 首先由 ...

  2. iOS开发中关于UIImage的知识点总结

    UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...

  3. 【IOS开发笔记03-视图相关】简单计算器的实现

    UIView 经过前几天的快速学习,我们初步了解的IOS开发的一些知识,中间因为拉的太急,忽略了很多基础知识点,这些知识点单独拿出来学习太过枯燥,我们在今后的项目中再逐步补齐,今天我们来学习APP视图 ...

  4. iOS开发中获取WiFi相关信息

    iOS 开发中难免会遇到很多与网络方面的判断,这里做个汇总,大多可能是与WiFi相关的. 1.Ping域名.Ping某IP 有 时候可能会遇到ping 某个域名或者ip通不通,再做下一步操作.这里的p ...

  5. iOS开发中虚拟键盘相关的坑

    初学者在学习iOS开发时,遇到在一个textField中输入完内容后却发现虚拟键盘无法隐藏起来而不知所措的情况的人一定不占少数吧.这篇文章就说说我遇到的和虚拟键盘有关的三个问题及解决对策. 在模拟器测 ...

  6. iOS开发中与库相关的术语

    动态库 VS 静态库 Static frameworks are linked at compile time. Dynamic frameworks are linked at runtime

  7. IOS开发UI基础UITextFidle相关属性

    UITextFidle相关属性 •    enablesReturnKeyAutomatically默认为No,如果设置为Yes,文本框中没有输入任何字符的话,右下角的返回按钮是disabled的. ...

  8. iOS开发笔记--UILabel的相关属性设置

    在iOS编程中UILabel是一个常用的控件,下面分享一下UILabel的相关属性设置的方法. 很多学习iOS6编程都是从storyboard开始,用到UILabel时是将控件拖到storyboard ...

  9. IOS开发UI基础UITextView相关属性

    UITextView相关属性 •    text: 设置textView中文本_textView.text = @"Now is the time for all good develope ...

随机推荐

  1. SonarQube的安装、配置与使用

    SonarQube是管理代码质量一个开放平台,可以快速的定位代码中潜在的或者明显的错误,下面将会介绍一下这个工具的安装.配置以及使用. 准备工作: 1.jdk(不再介绍) 2.sonarqube:ht ...

  2. C# 形参中有默认值

    形参有默认值,表是该参数可以传,可以不传. 例如: private void button2_Click(object sender, EventArgs e) { textBox2.Text += ...

  3. 随机数生成器console

    #include <stdio.h> #include <stdlib.h> #include <time.h> int main() { ]; ]; int i; ...

  4. 命令别名alias设置

    <转:http://vbird.dic.ksu.edu.tw/linux_basic/0320bash_3.php> 命令别名配置: alias, unalias 命令别名是一个很有趣的东 ...

  5. Spring4.1新特性——Spring MVC增强

    目录 Spring4.1新特性——综述 Spring4.1新特性——Spring核心部分及其他 Spring4.1新特性——Spring缓存框架增强 Spring4.1新特性——异步调用和事件机制的异 ...

  6. Javascript 基础知识学习--javascript中的参数传递都是按值传递的

    ECMAScript中所有函数的参数传递都是按值传递的,无论参数是值类型还是引用类型的.过去我跟大多数人一样觉得跟传值类型相关. 自己写了一个测试的例子,确实如此 function add(a) { ...

  7. Log功能

    目录控制开关,若存在则创建log文件,输出. 宏函数,若debug打开,则输出. 多线程输出到同一文件. 通过mutex控制多个进程同时创建log文件.

  8. 关于Excel导入导出的用例设计

    目前,为方便操作,很多系统都会增加批量导入导出的功能.文件导入导出一般格式都是excel.由于用户直接在excel在填写内容,无法控制填写的格 式,加上excel解析比较困难,所以一般涉及到excel ...

  9. #pragma pack(n)

    #pragma pack(n) 重要规则: 1,复杂类型中各个成员按照它们被声明的顺序在内存中顺序存储,第一个成员的地址和整个类型的地址相同: 2,每个成员分别对齐,即每个成员按自己的方式对齐,并最小 ...

  10. cocos2d中的可见性检测

    游戏的在进行一次渲染的时候,通常会提交大量的渲染对象给gpu.在这些需要渲染的对象中,并不是所有对象都会出现镜头中,即有一部分对象是不可见的. 通常有两种方式来完成不可见对象的剔除工作: (1)直接交 ...