您的位置:首页 > 移动开发 > IOS开发

iOS开发入门杂记

2015-09-25 18:53 495 查看
这两天将apple官网的《Start Developing iOS Apps Today》仔细的学习了一遍,现在iOS的项目代码基本可以搞清楚了,算是很基本的入门了。这里边记录一下学习过程中的一些笔记。

由于我之前主要是做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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: