(原)Android到IOS开发的转换(一)
序)闲扯几句
很早就想入手ios开发,但是一直没有机会,个人没有水果机器,上个公司上班的那台mac mini虽然就在我身边,灰都有一层了,但是一直没有机会开机学习下,因为事多,自上一篇文章后,离职后,新公司给配备了mac pro,正好满足了自己都心愿,开始水果软件开发。自己也是从0开始,学习它不过就这3-4天而已,但是之前对oc还是有些了解,因此凭着android的感觉去做,移动端嘛,不都是布局上丢组件,我相信也有人如果从android走到ios也会有这样的思想吧,我的思路是:
- 先翻翻ios的结构
- 布局一个view,如何布局并且操纵布局中的对象
- 基本的button,listview,gridview等等所有的组建的使用
- view跳转传值
- sqlite操作
- 网络操作
- 本地文件操作
- 内存管理
到这里基本来说就可以做一些简单的应用了,最好的方式就是赶紧加入一个ios项目组,接下来的东西就是深入了,对于有android的开发经验来说,走到ios开发去不是很难,可能难的地方是对oc的理解,我也不得不说oc的语法对于用惯了java/c+的人来说确实很奇葩,就像做php的热突然看见erlang一样。
准备)oc基础,从面向对象起步
关于oc的语法http://www.cnblogs.com/lm3515/archive/2010/12/20/1911135.html这个朋友总结的很好,看完这个基本就能开始了。
一)HelloWorld
任何语言都是从它起步,不解释,当我拿到水果机的第一件事是干嘛?打开xcode赶紧创建一个ios的helloworld。
看到上面的目录结构,相信做过cocos的朋友看起来是不是有点熟悉?其实它的运行流程都和cocos差不多。
ios里面文件的后缀:
.h:和c一样,头文件
.m:message的缩写,也就是oc对h文件对实现
.mm:如果我们的一个文件里面即有c++代码,也有oc代码,就将它命名为.mm后缀,编译器会分别处理oc和c+代码。
.xib:以前叫nib,nib是直接编译成二进制,xib是xml文件,也就是布局文件,就是android里面的layout_xxx.xml。项目里面由一个LunachScreen的xib文件,它就是ios在刚刚启动的时候显示的东西,如果你的应用启动快,它就是一闪而过,启动慢可能会显示久点,相当于loading。
二)流程
ios的入口函数是main.m文件,里面
一个项目项目结构图如上所示,看到这个结构,我们很关心它的流程是怎样,ios里面它的入口是main.m文件,在main里面声明了代理类的运行:
#import <UIKit/UIKit.h>
#import "AppDelegate.h" int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
这里我们看到由main启动了appdelegate这个代理类,在这个代理类里面我们可以设置ios默认启动哪个试图作为第一个显示试图,如下所示:
#import "AppDelegate.h"
#import "ViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
_window=[[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
ViewController *friendController=[[ViewController alloc]init];
UINavigationController *navigationController=[[UINavigationController alloc]initWithRootViewController:friendController];
_window.rootViewController=navigationController;
[_window makeKeyAndVisible];
return YES;
} - (void)applicationWillResignActive:(UIApplication *)application {
} - (void)applicationDidEnterBackground:(UIApplication *)application {
} - (void)applicationWillEnterForeground:(UIApplication *)application {
} - (void)applicationDidBecomeActive:(UIApplication *)application {
} - (void)applicationWillTerminate:(UIApplication *)application {
} @end
在这里我们设置了默认显示的第一个视图为:ViewController,并且我们设置了一个东西:
_window.rootViewController=navigationController;
这个我们可以理解为android的Context,有了这个我们就可以全局控制管理view,最开始我没有设置这个,所以view页面跳转老是跳转不过去,并且官方也推荐使用这种方式而不是直接在view中跳转。
三)view
现在我们来到了ViewController,它就是android中的activity,activity继承至Activity,而ios中它继承UIViewController,因此在这里就可以操作这个页面的视图,而View的跳转也就是我们android里面activity的跳转。
它的跳转方式如下:
LoginViewController *ickImageViewController = [[LoginViewController alloc] init];
[self.navigationController pushViewController: ickImageViewController animated:true];
就是push和pop view的方式,通过我们前面定义的根view。
四)布局
ios的布局可比android舒服多了,因为屏幕少啊,再多也没android多吧,在ios里面布局分为三种:
- 代码:代码布局就是不是用xib文件,直接代码创建button之类的,这个在ios里面是可行的,因为ios项目组开发中,美工在效果图的时候,还会给出组建的xy坐标位置,并且代码可复用程度较高。
- xib:xib就是前面将的,和android一个activity对应一个布局xml一样,一个ios的view对应一个xib,但是不得不说的是ios里面的拖拉拽比android里面的穷矮挫舒服多了,效果好很多很多。
- Storyboard:这个东西是新生儿,统一了上面两种方式,它管理的所有view的布局。
五)结尾
好吧,这两天后能够使用3种布局创建一些界面,然后在上面丢一些组件,操作下本地数据库,网络下载点东西,之前我一直做服务器,也在andrid下搞xmpp,正好ios下也练手。
至于对于ios的深入分析了解,还真不是一天两天能学出来的,能做和懂是两码事了,后者最好是和别人学习。
写的有些随意和杂。
(原)Android到IOS开发的转换(一)的更多相关文章
- 提供给Android和iOS开发人员的UWP移植向导
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:前几天微软发布了一个针对Android和iOS开发人员理解Windows Apps概念 ...
- Android &Swift iOS开发:语言与框架对比
转载自:http://www.infoq.com/cn/articles/from-android-to-swift-ios?utm_campaign=rightbar_v2&utm_sour ...
- 选择Android还是IOS开发?
选择Android还是IOS? 随着移动互联网的如日中天,涌现了越来越多的开发者.IOS优秀的用户体验,Android极高的用户群,这对于开发者来说陷入了选择困难的境地,尤其是新入门的开发者,精力有限 ...
- VS2015配置安卓Android和iOS开发环境
http://www.cjjjs.cn/paper/gzsh/627201502818357.aspx [摘要] 本文按照步骤一步步的介绍要下载安装的东西,都提供了下载地址.最后将所有需要的程序都打包 ...
- Android和IOS开发学习路线
图片看上去太小,直接另存为吧 图片来自:http://www.finalshares.com/
- [Hadoop 周边] 浅谈大数据(hadoop)和移动开发(Android、IOS)开发前景【转】
原文链接:http://www.d1net.com/bigdata/news/345893.html 先简单的做个自我介绍,我是云6期的,黑马相比其它培训机构的好偶就不在这里说,想比大家都比我清楚: ...
- fir.im Weekly - iOS开发中的Git流程
本期 fir.im Weekly 收集了微博上的热转资源,包含 Android.iOS 开发工具.源码等好用的轮子,还有一些 APP 设计的 Tips,希望对你有用. 精仿知乎日报 iOS 端 @我偏 ...
- fir.im Weekly - 给女朋友的 iOS 开发教程
俗话说:技多不压身,功到自然成.本期 fir.im Weekly 收集的热度资源,大部分关于Android.iOS 开发工具和源码,还有一些有关设计的 Tips ,希望对你有帮助. 给女朋友的 iOS ...
- IOS开发涉及有点概念&相关知识点
前言,IOS是基于UNIX的,用C/C+/OC直通系统底层,不想android有个jvm. 首先还是系统架构的分层架构 1.核心操作系统层 Core OS,就是内存管理.文件系统.电源管理等 2.核心 ...
随机推荐
- HDU 5675 智慧数
题意:给一个n ,能否找到正整数x,y使得 x^2 -y^2 = n: 分析:打表可以找出规律,3,5,7,9....,8,12,16,20..... 和奇数,4的倍数有关. 数学证明:
- HDU 5805
题意: 退役狗 NanoApe 滚回去学文化课啦! 在数学课上,NanoApe 心痒痒又玩起了数列.他在纸上随便写了一个长度为 nn 的数列,他又根据心情随便删了一个数,这样他得到了一个新的数列,然后 ...
- [19/03/15-星期五] 常用类_String类&StringBuilder和StringBuffer类
一.基本概念 String 类对象代表不可变的Unicode字符序列,因此我们可以将String对象称为“不可变对象”. 那什么叫做“不可变对象”呢? 指的是对象内部的成员变量的值无法再改变.Str ...
- c#运用this.invoke() 在多线程时对UI进行修改
什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指包括运行中的程序和程序所使用到的内存和系统资源.而一个进程又是由多个线程所组成的,线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈 ...
- Python-time和datetime模块
一.time模块 1.表示时间的三种方式 >>> import time >>> time.time() #当前时间戳 1509525556.8485825 > ...
- 【luogu P2341 [HAOI2006]受欢迎的牛】 题解
题解报告:https://www.luogu.org/problemnew/show/P2341 我们把图中的强连通分量缩点,然后只有出度为0的牛是受欢迎的,这样如果出度为0的牛只有一个,说明受所有牛 ...
- UDP端口启动后一段时间无法接收到数据
接口需求:开发一个UDP协议的接口作为服务端接收来自客户端的认证数据,数据量每分钟7w+条; 数据格式:标准的redius协议,redius协议的相关知识在网上查资料,提供线索:http://blog ...
- oracle日常监控语句
oracle常用的性能监控SQL语句 一.查询历史SQL: ---正在执行的SQL语句: select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT fro ...
- 随便说说Promise
为啥要说 promise ? 因为这是前端必须要掌握的一个知识,吹逼必备 首先说说 Promise 是什么? Promise 是JavaScript的第一个异步标准模型,一个包含传递信息与状态的对象, ...
- ABAP术语-Business Process
Business Process 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/11/1035316.html A prepared sce ...