IOS对比Android学习笔记

一. 语言基础,面向对象

数据类型

String NString

变量

数组

函数

日期

集合,容器

static

private,public,protected

this 和 self

反射

内存管理

1.ios 手动内存管理和自动内存管理

Xcode 4.2 之前,开发者需要通过 retain release autorelease 进行内存管理,所以需要去理解对象的引用计数机制,(对习惯java的开发者来说就麻烦了),Xcode 4.2之后加入了自动引用计数(ARC),方便开发

2.@autoreleasepool

IOS 补充

预处理

结构体

KVC 和 KVO

类别Category

协议Protocol 和 委托(代理)Delegate

参考: http://www.jianshu.com/p/ae7472664afc

二. Android应用和IOS应用

引入第三方依赖库:

Android的两种方式:

1.下载jar包到libs目录
2.使用gradle配置compile 某个依赖库

IOS的两种方式

1.使用CocoaPods

相关资料:
安装:

sudo gem sources --remove https://rubygems.org/
sudo gem sources --add https://gems.ruby-china.org/
sudo gem update --system
mkdir -p $HOME/Software/ruby
export GEM_HOME=$HOME/Software/ruby
gem install cocoapods
export PATH=$PATH:$HOME/Software/ruby/bin

使用
http://www.bkjia.com/IOSjc/1106507.html (只看使用部分,安装不要参考它的)
https://gems.ruby-china.org/ (淘宝源已经废弃了,用这个吧)
http://www.jianshu.com/p/6ff1903c3f11 (解决command not found)

初次执行pod install,会下载个git好慢,我是半夜下才下好了,莫非git半夜网速快?

2.引入源码

一些开源库作者直接提供了代码和资源文件,按照说明复制进项目就可以了
引入后代码里在要用到记得先import相关.h文件
参考: http://www.mamicode.com/info-detail-1223789.html

3.引入依赖库

有些第三方库是闭源的,给过来的是一个二进制.framework文件,直接把文件拖进工程就可以了。
还有些第三方库在集成的时候要求项目添加一些系统的库,比如BuglySdk
https://bugly.qq.com/docs/user-guide/instruction-manual-ios/?v=20170216203141
这时候可以点击项目名->点击上方general->拉倒下方有个
Linked Frameworks and Libraries 加入对应的依赖库 ,如果要求添加的是dylib或tbd文件,参考:
引入.framework
http://www.cnblogs.com/SeeMeFly/archive/2011/09/09/2172688.html
引入dylib或tbd
http://blog.csdn.net/yinqiangqiang/article/details/50041061

静态资源目录

Http请求

Json处理

文件IO

基本UI

UI控件的绑定:

对于Android,可以在layout的xml文件里放置好button等控件,然后在代码里通过findvViewById来实现对象和界面控件的绑定。
对于ios,有两种方式实现绑定:
1.ctrl键拖动sb里面的按钮连线的.m文件的interface声明中,xcode就会生成一个对应的对象(IBoutlet机制)
2.为控件设置tag,然后在代码里利用viewWithTag关联tag对应的控件

Button,TextView,EditText

1.android和html的界面控件有个叫内边距的东西叫padding
到了ios这里叫insets

布局

android的几种布局管理

常用的比如LinearLayout,RelativeLayout等

ios的布局

AutoLayout
教程: https://www.youtube.com/watch?v=QVKwbLvk8Sg
总结: 原来xcode是可以点开preview界面,查看当前布局在不同尺寸下的效果,吐槽下xcode界面按钮又多又小藏的那么深都不知道干嘛用的,点中控件,然后Editor->Align 可以让控件水平或垂直居中,类似android的layout的layout_gravity。然后Editor->Pin 可以让控件的宽高自动根据屏幕调整,这点比android方便多了。ios的constraints是用来做控件自动布局时候的相关约束规则,可以选中控件->Editor->Resole AutoLayout Issues 进行相关约束配置。
更多AutoLayout参考:
http://www.cocoachina.com/industry/20131203/7462.html

对话框

android: Dialog,AlertDialog
ios:UIAlertView

ViewController与Activity

ViewController

ios的ViewController相当于Android的Activity
比较麻烦的是暂时发现,假如我在Android Studio里面创建一个Activity,AS会自动帮我生成这个Activity的 .java类文件 .xml 布局文件,但是在ios的storyBoard 里面拖入一个ViewController后,我仍然需要手动创建.h .m文件,并为这个新的ViewController通过CustomClass 手动关联对应的类,然后就觉得心好累。

在Android里面,我们通常会创建多个Activity,然后通过Intent来实现Activity之间的跳转。
而在ios里,可以创建并选中一个ViewController(比如默认xcode默认创建好的viewController),然后用NavigationController把这个ViewController装起来(操作:Editor->Embed in->Navigation Controller),另外可以通过Segue实现ViewController之间的连接和跳转。
NavigationController教程(自行科学上网):
https://www.youtube.com/watch?v=reVzUBCS0sw

Tabbar Controller

在ios上实现tab效果确实要比Android上实现要简单的多哈
Tabbar Controller 以及 Tabbar结合Navigation教程(自行科学上网):
https://www.youtube.com/watch?v=qv-MOlsV3dw

表格和ListView

虽然Android有TableLayout,但是展示批量数据的时候我们通常用的是ListView
对应到IOS,就是TableView了
视频教程(科学上网):
https://www.youtube.com/playlist?list=PLoN_ejT35AEgMq1z2yL2cwDg-G57y-QpO

高级UI

tab

webview

侧滑抽屉

事件

数据存储

CoreData, SQLite,

线程

通知和推送

三. 游戏编程

cocos2d cocos2d-x

unity

猜你喜欢

转载自blog.csdn.net/live4what/article/details/55755514