iOS开发入门杂记
2015-09-25 18:53
495 查看
这两天将apple官网的《Start Developing iOS Apps Today》仔细的学习了一遍,现在iOS的项目代码基本可以搞清楚了,算是很基本的入门了。这里边记录一下学习过程中的一些笔记。
由于我之前主要是做android的,所以会用java和android里边的知识点与objective-c和iOS的做对应,这样理解起来更快。
字符串
NSString - 不可变字符串,相当于Java中的String
NSMutableString - 可变字符串,类似于Java中的StringBuilder。
数值:NSNumber,它可以赋值各种数值类型的值,如char, short, int, long, float, double,甚至BOOL。这个类比较”强大”,在Java中找不到单独对应的类。
日期:NSDate,表示日期。到现在并没有使用过,看起来应该对应于Java中的Date。
二进制数据
NSData,不可变二进制数据。相当于Java中的byte[],即创建后内容不可变。
NSMutableData,顾名思义,可以修改的二进制数据。相当于Java中的ByteBuffer,即一个字节缓冲区。
NSValue,可以存放基本数据结构, struct, enum, nil等数据类型。相当于Java中的包装器,即int - Integer, byte - Byte, float - Float等。
集对象
数组
NSArray - 不可变数组,相当于Java中的数组。同样都是初始化后值不可变,但是它并不要求每个元素都是同一个类的实例。
NSMutableArray - 可变数组,这个我觉得还是很像Java中的List,确切的说是ArrayList。至于在Objective-C中有没有响应的”LinkedList”,这个我还不清楚(毕竟刚入门,: ))。
集合
NSSet - 不可变集合,相当于Java中的Collections.UnmodifitableSet。
NSMutableSet - 可变集合,相当于Java中的HashSet(不排序)。
字典
NSDictionary - 不可变字典,相当于Java中的Collections.UnmodifiableMap。
NSMutableDictionary - 可变字典,更像Java中的HashMap。
实现,相当于C++的cpp文件,只不过后缀名是”.m”
属性,储存对象的数据,用@property来做修复符,相当于Java的成员变量。
公共访问,将属性声明在接口文件中
私有访问,将属性声明在实现文件中
只读,使用(readonly)修饰表示该属性只读,类似于Java的成员变量加上final修复符
方法
类方法,使用”+”表示,相当于Java中的静态方法
实例方法,使用”-“表示,相当于Java中的成员方法
公共方法与私有访问的实现方式与上面的属性一样
方法参数,这个对于新手(尤其是其它语言转过来的人)来说,是语法上最奇怪的一个方面。不太好描述,附上几个简单的例子
没有参数:
一个参数:
两个参数:
三个及以上参数:以此类推…
协议:这个才是Java中的接口,主要用于实现回调
storyboard,apple官方中文翻译为”串联图”。可以定义多个界面,并且定义它们之间的跳转关系(猜测”串联”应该由此而来)
xib,与storyboard相比较为轻量,用于描述局部的ui界面。这让我想到了android写布局的layout文件(目前我还没有自己写过xib,所以这里主要是猜测)
autolayout,ios6开始引入的技术,目的是为了自动适配多种屏幕的设备。具体用法这里没有必要”复制-粘贴”,网上有很多”如何使用”的教程。目前我只简单的用过storyboard写ui界面,感觉ViewController的View(相当于android的ViewGroup)很像一个RelativeLayout,而auto layout增加的各种constraints,则对应于android中RelativeLayout的child view可以设置的各种相对parent view或sibling view的属性。
一些概念的理解
scene
viewcontroller
segue
relationship
常用UI控件(UIKit views)
内容(Content):显示特定对象的内容,例如图像或者文本
UIImageView,相当于android中的ImageView
UILabel,相当于android中的TextView
集(Collections):网格布局或者列表布局
UICollectionView,相当于android中的GridView
UITableView,相当于android中的ListView(不要被名字里边的”table”所迷惑)
控制(Controls):执行操作或显示信息
UIButton,相当于android中的Button
UISlider,相当于android中的SeekBar
UISwitch,相当于android中的Switch
栏(Bar):用于导航或执行操作
UIToolBar,在屏幕底部显示的工具栏
UINavigationBar,在系统状态栏之下显示的导航栏,与android中的ActionBar有些像
UITabBar,在屏幕底部显示的Tab栏,类似于android中的TabHost(TabHost默认是在顶部显示的,如果要在底部显示,需要一些技巧)
输入(Input):接收用户输入的文本
UISearchBar,搜索输入栏目,类似于android中的SearchView
UITextView,相当于android中的EditText
容器(Containers):其它View的容器,即android中的ViewGroup
UIView,有些像android中众多ViewGroup中的RelativeLayout
UIScrollView(见谅,刚入门,目前还不清楚是否支持横向滚动),相当于android中的ScrollView
模态(Modal):中断应用程序的正常流程,允许用户进行某种操作
UIAActionSheet,从屏幕底部弹出的对话框,里边有几种用户可以执行的操作
UIAlertView(iOS8开始已经过时,建议使用UIAlertController),类似于android中的AlertDialog
是抽象设计,而非代码
即独立于各种语言而存在
采用一种设计,就是应用它的通用模式来解决特定问题
有什么作用
解决常见的软件工程问题
可以帮助定义
数据模型的结构
它与应用程序其它部分的交互方式
为什么要使用
有助于更高效地使用框架
可以使得编写的程序复用程度更高、扩展性更强和更容易修改
常见的几种设计模式
MVC
目标-操作
委托
UI
UIKit
Core Graphics
Core Animation
Game
Game Kit
Sprite Kit
OpenGL ES
Game Controller
Data
Core Data
Foundation
Media
*** Foundation
由于我之前主要是做android的,所以会用java和android里边的知识点与objective-c和iOS的做对应,这样理解起来更快。
Objective-C基础知识
Foundation框架里边的常用类
值对象字符串
NSString - 不可变字符串,相当于Java中的String
NSMutableString - 可变字符串,类似于Java中的StringBuilder。
数值:NSNumber,它可以赋值各种数值类型的值,如char, short, int, long, float, double,甚至BOOL。这个类比较”强大”,在Java中找不到单独对应的类。
日期:NSDate,表示日期。到现在并没有使用过,看起来应该对应于Java中的Date。
二进制数据
NSData,不可变二进制数据。相当于Java中的byte[],即创建后内容不可变。
NSMutableData,顾名思义,可以修改的二进制数据。相当于Java中的ByteBuffer,即一个字节缓冲区。
NSValue,可以存放基本数据结构, struct, enum, nil等数据类型。相当于Java中的包装器,即int - Integer, byte - Byte, float - Float等。
集对象
数组
NSArray - 不可变数组,相当于Java中的数组。同样都是初始化后值不可变,但是它并不要求每个元素都是同一个类的实例。
NSMutableArray - 可变数组,这个我觉得还是很像Java中的List,确切的说是ArrayList。至于在Objective-C中有没有响应的”LinkedList”,这个我还不清楚(毕竟刚入门,: ))。
集合
NSSet - 不可变集合,相当于Java中的Collections.UnmodifitableSet。
NSMutableSet - 可变集合,相当于Java中的HashSet(不排序)。
字典
NSDictionary - 不可变字典,相当于Java中的Collections.UnmodifiableMap。
NSMutableDictionary - 可变字典,更像Java中的HashMap。
编写自定类相关
接口,此接口非Java的接口,而是C/C++的头文件实现,相当于C++的cpp文件,只不过后缀名是”.m”
属性,储存对象的数据,用@property来做修复符,相当于Java的成员变量。
公共访问,将属性声明在接口文件中
私有访问,将属性声明在实现文件中
只读,使用(readonly)修饰表示该属性只读,类似于Java的成员变量加上final修复符
方法
类方法,使用”+”表示,相当于Java中的静态方法
实例方法,使用”-“表示,相当于Java中的成员方法
公共方法与私有访问的实现方式与上面的属性一样
方法参数,这个对于新手(尤其是其它语言转过来的人)来说,是语法上最奇怪的一个方面。不太好描述,附上几个简单的例子
没有参数:
- (void)markAsCompleted;,方法名是”markAsCompleted”
一个参数:
- (void)markAsCompleted:(BOOL)isComplete;,方法名是”markAsComplete:”,即”:”作为方法名的一部分
两个参数:
- (void)markAsCompleted:(BOOL)isComplete onDate:(NSDate *)date;,方法名是”markAsComplete:onDate:”,注意这里的”onDate:”是方法名的一部分
三个及以上参数:以此类推…
协议:这个才是Java中的接口,主要用于实现回调
iOS知识
UI
可视化开发布局storyboard,apple官方中文翻译为”串联图”。可以定义多个界面,并且定义它们之间的跳转关系(猜测”串联”应该由此而来)
xib,与storyboard相比较为轻量,用于描述局部的ui界面。这让我想到了android写布局的layout文件(目前我还没有自己写过xib,所以这里主要是猜测)
autolayout,ios6开始引入的技术,目的是为了自动适配多种屏幕的设备。具体用法这里没有必要”复制-粘贴”,网上有很多”如何使用”的教程。目前我只简单的用过storyboard写ui界面,感觉ViewController的View(相当于android的ViewGroup)很像一个RelativeLayout,而auto layout增加的各种constraints,则对应于android中RelativeLayout的child view可以设置的各种相对parent view或sibling view的属性。
一些概念的理解
scene
viewcontroller
segue
relationship
常用UI控件(UIKit views)
内容(Content):显示特定对象的内容,例如图像或者文本
UIImageView,相当于android中的ImageView
UILabel,相当于android中的TextView
集(Collections):网格布局或者列表布局
UICollectionView,相当于android中的GridView
UITableView,相当于android中的ListView(不要被名字里边的”table”所迷惑)
控制(Controls):执行操作或显示信息
UIButton,相当于android中的Button
UISlider,相当于android中的SeekBar
UISwitch,相当于android中的Switch
栏(Bar):用于导航或执行操作
UIToolBar,在屏幕底部显示的工具栏
UINavigationBar,在系统状态栏之下显示的导航栏,与android中的ActionBar有些像
UITabBar,在屏幕底部显示的Tab栏,类似于android中的TabHost(TabHost默认是在顶部显示的,如果要在底部显示,需要一些技巧)
输入(Input):接收用户输入的文本
UISearchBar,搜索输入栏目,类似于android中的SearchView
UITextView,相当于android中的EditText
容器(Containers):其它View的容器,即android中的ViewGroup
UIView,有些像android中众多ViewGroup中的RelativeLayout
UIScrollView(见谅,刚入门,目前还不清楚是否支持横向滚动),相当于android中的ScrollView
模态(Modal):中断应用程序的正常流程,允许用户进行某种操作
UIAActionSheet,从屏幕底部弹出的对话框,里边有几种用户可以执行的操作
UIAlertView(iOS8开始已经过时,建议使用UIAlertController),类似于android中的AlertDialog
设计模式
是什么是抽象设计,而非代码
即独立于各种语言而存在
采用一种设计,就是应用它的通用模式来解决特定问题
有什么作用
解决常见的软件工程问题
可以帮助定义
数据模型的结构
它与应用程序其它部分的交互方式
为什么要使用
有助于更高效地使用框架
可以使得编写的程序复用程度更高、扩展性更强和更容易修改
常见的几种设计模式
MVC
目标-操作
委托
iOS技术
指的是iOS提供的各种供开发者使用的框架UI
UIKit
Core Graphics
Core Animation
Game
Game Kit
Sprite Kit
OpenGL ES
Game Controller
Data
Core Data
Foundation
Media
*** Foundation
相关文章推荐
- iOS开源项目学习—— AFNetworking
- ios URL 中文乱码问题
- ios pop 折叠动画
- IOS 懒加载,死循环
- IOS开发过程中与嵌入的网页数据交互
- iOS_AFNetWorking框架分析
- IOS 纯代码实现视图控制器的封装
- IOS UDP小例子总结
- iOS项目开发实战——Label中字体字号与Label多行显示
- IOS 实现美图秀秀
- IOS 实现植物大战僵尸
- IOS tableView下拉刷新,上拉刷新(LOW)
- IOS 字符串中去除特殊符号 stringByTrimmingCharactersInSet 应该用于账号登录等
- IOS 递归简单使用及相关操作
- ios coreData 学习
- IOS 枚举的简单应用;使用
- iOS的KVO底层实现原理
- IOS 大众点评 搜索界面实现
- IOS 大众点评 首页界面 仿真实现
- IOS 文件管理,基础使用