一. 语言基础,面向对象
数据类型
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.youkuaiyun.com/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 手动关联对应的类,然后就觉得心好累。
Navigation Controller
在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