一、xcode编译并运行app后,iphone模拟器已安装的app所在目录:

# 1. /Users/alpha/Library/Application Support/iPhone Simulator/5.1/Applications

# 2. 删除此目录下的app目录,即可清空模拟器里安装过的app

# 3. sqlite数据库文件一般在上面目录下的某个app目录下的Documents目录

二、xcode编译出来的app目录:

/Users/alpha/Library/Developer/Xcode/DerivedData

{ 熟悉UITableView使用 =>自定义UITableViewCell =>coredata数据库框架(sqlite本地存储) =>网络数据传输框架熟悉()}

1. 熟悉cocoa touch框架(MVC),弄清楚框架中哪个是作为model,哪个作为View,哪个作为Controller

appdelegate:是cocoa框架中,对应用程序生命周期的管理(app程序的启动和关闭,清理内存等操作),启动 viewController

viewController:即mvc中的控制器(控制view的显示,和实现ui控件的事件循环,接受button的按钮事件,并调用相应的处理函数【也即业务逻辑、数据库读取数据等】)

xib:mvc中的view(设计ui的资源文件)Xcode4以前的版本中使用xib文件来设计ui,当然xcode4以上的版本也可以使用xib,但是推荐用storyboard来设计界面(只有ios5以上支持)

storyboade: iOS5以上的版本支持使用此概念来设计ui(前提需要使用低耦合的mvc模式来设计)

(下面两个概念重要)

插座变量:(IBOutlet修饰的变量):此变量和 UI控件(如:UITextField)关联后,相当于是UI控件的操作指针,获取控件的值等操作。

@property( nonatomic, retain) IBOutlet UITextField *textField;

1. @property关键词告诉编译器把textField插座变量公开为属性。

2. nonatomic关键词指出不需要确保属性以thread安全的方式使用。

3.  .m文件中,使用synthesize关键词告诉编译器为插座变量指定的getter和setter。

控件触发函数:(IBAction修饰的事件):用于关联 按钮 到 本函数,当UIButton的某个事件出发时,调用此函数,可以完成数据库操作等业务逻辑。

2.弄清楚了上述MVC结构,开始熟悉objective-c的语法,就可以上手开发app了。

3.xib设计ui的模式:(iOS5上已经过时)

a.创建一个工程

b.拖动viewController对象到IB设计器中

c.新建一个子类继承自UIViewController(xcode中自动生成.h .m两个文件)此控制器文件用于管理刚刚设计的view

d.viewController.h中定义插座变量和按钮的点击触发函数

e。ctrl按住,点击拖动想要关联的UI控件 到 File's owner, 会弹出刚刚定义的插座变量和按钮的点击触发函数。

4.storyboard设计ui的开发模式:(iOS5以上版本才有此特性,目前开发都用这种)

a. 绘制并布局ui控件(这里有个插座变量的概念,用IBOutlet修饰,此变量可以通过拖线的方式和ui控件建立关系,然后controller代码中使用此插座变量就可以操作ui控件)

如:controller.h 中定义: @property (nonatomic,retain) IBOutlet UITextField *textField; 然后界面上绘制的UITextField控件和 textField变量建立关联,代码中操作textField变量即可操控UITextField控件了。

b. 当然这里红色的插座变量textField我是在controller.h代码中手写的,也可以打开storyboard后,按option+command+return打开controll.h窗口,使用拖动UITextField控件到controller.h中来自动生成上面的textField插座变量代码。//同理,button生成IBAction的点击事件函数也可以用拖动控件到controller.h中的方式来生成,并自动在controller.m中生成事件函数的原型代码。

5.接下来熟悉了上面的概念,其实ios开发设计,都是主要针对tableView的设计和各种viewController之间跳转(segue)

如何获取storyboard中tableView的对象我已经写了相应的文章。

下面的内容转自互联网:

Cocoa的MVC架构分析

Cocoa MVC Objective-C MacRuby OS

Cocoa是Mac OS和iPhone OS上的开发框架,使用Objective-C做为开发语言。当然,在代码中也可以嵌入C和C++的语句。初识Objective-C时会觉得它的语法很奇怪,但本质上和其他面向对象语言都差不多。具体语法大家可以参考相关文档。

在Cocoa框架中:

所有的控件、窗口等都继承自 UIView,对应MVC中的 V。UIView及其子类主要负责UI的实现,而UIView所产生的事件都可以采用委托的方式,交给UIViewController实现。对于不同的UIView,都有相应的UIViewController 对应MVC中的C。比如在iPhone OS上常用的UITableView,它所对应的Controller就是UITableViewController。至于MVC中的M,那需要根据用户自己的需求来实现了。

下面看一下一个自定义UIView的架构是怎么样的。这之前要认识一下Objective-C中的几个重要的关键字。

@interface 定义一个类,这个很容易和Java中的interface混淆。

@protocol 定义一个协议,我跟喜欢把它理解成一个接口,相当于Java中的interface。

Objective-C只支持单继承,但可以实现多个协议(接口),语法如下:

Objective-c代码  
  1. @interface Child : Parent <Protocol1,Protocol2>
  2. {
  3. //成员变量定义
  4. }
  5. //成员方法,类方法,属性定义
  6. @end
@interface Child : Parent <Protocol1,Protocol2>{//成员变量定义}//成员方法,类方法,属性定义@end

有了以上的知识后,我们就可以来定义自己的UIView了。

首先是定义一个UIView的子类。

Objective-c代码

@interface MyUIView : UIView
{//定义一些控件id<MyUIViewDelegate> delegate; //这个定义会在后面的解释,它是一个协议,用来实现委托。}//定义一些控件设置方法
@property id<MyUIViewDelegate> delegate; //定义一个属性,可以用来进行get set操作@end

然后定义一个Protocol,按照Cocoa的习惯,一般它以delegate结尾,熟悉C#的同学应该知道它的意义。其实不论是接口,委托,还是回调函数,本质上都做了一件事情。就是定义了一个操作契约,然后由用户自己来实现它的具体内容。

Objective-c代码  

//这里只需要声明方法
- (void)func1
- (int)func2:(int)arg@end

完成以上两步之后就需要设计自己的UIViewController了。一般简单的做法,可以让这个Controller来实现上面定义的MyUIViewDelegate。在Cocoa框架中,很多控件和它的Controller都是采用的这种方式。

Java代码  

: UIViewController <MyUIViewDelegate>
{
//成员变量
}//成员方法,类方法,属性@end

定义都完成了,到这里其实还看不出这三者是怎么联系起来的。那接下来就要看看,MyUIView和MyUIViewController的具体实现了。

首先是MyUIView的实现代码,假设在MyUIView在发生某个事件后会调用doSometing方法(按钮事件)

Objective-c代码  
  1. - (void)doSomething
  2. {
  3. if( delegate != nil )  //这里的delegate就是UIView定义时候的一个委托对象
  4. {
  5. [delegate func1]; //[]表示对一个对象发消息,如果在Java中会写成delegate.func1()
  6. }
  7. }
- (void)doSomething
{if( delegate != nil )  //这里的delegate就是UIView定义时候的一个委托对象{[delegate func1]; //[]表示对一个对象发消息,如果在Java中会写成delegate.func1()}
}

上面的代码中 nil 相当于 Java中的 null,这里的意思就很明显了,如果delegate委托对象不为空,则调用相应的方法,但是这个delegate委托对象的方法在哪里实现呢。可以看一下MyUIViewController的定义,它实现了MyUIViewDelegate。所以这个方法当然是由它来实现。代码如下

Objective-c代码  
  1. - (id)init
  2. {
  3. MyUIView *myView = [[MyUIView alloc] init]; //对MyUIView进行初始化
  4. myView.delegate = self; //将MyUIViewController自己的实例作为委托对象
  5. self.view = myView;
  6. }
  7. - (void)func1
  8. {
  9. //具体实现,可以加入Model相关的代码   ,界面上的button点击后,调用此函数来实现业务逻辑
  10. }
- (id)init
{MyUIView *myView = [[MyUIView alloc] init]; //对MyUIView进行初始化myView.delegate = self; //将MyUIViewController自己的实例作为委托对象self.view = myView;
}- (void)func1
{//具体实现,可以加入Model相关的代码
}

这么一来整个,整个代码的线路就明白了。

1.MyUIViewController初始化(viewController控制view的展示,和定义ui点击事件的处理函数-(IBAction)onbuttonClick(id):sender;)

2.MyUIViewController初始化时初始化MyUIView,并且将自己作为委托对象赋值给MyUIView

3.MyUIView发生事件,调用(回调)委托对象的方法,其实就是调用MyUIViewController的方法。(界面点击事件,增加model相关代码)

ios app开发学习流程(入门到精通)相关推荐

  1. 【作废】Inventor 二次开发学习指南入门到精通(含Inventor最新二次开发教程下载)

    (由于AU中国已关闭,很多链接失效,而且有些内容需要更新.特作废此文,另外撰写一篇新的) 年初我曾撰写了一篇文章,登载到我同事的博客,以及AU中国.我想这篇作为本博客的第一篇正式技术文章,应该是最合适 ...

  2. 如何学习软件测试开发?从入门到精通?

    如何学习软件测试开发?从入门到精通?刚开始学习软件测试的同学要经历一段从学习到入行再到熟练的过程.掌握软件测试基础知识.学习软件测试的思维.将理论知识运用到实践中,做到真正的理解软件测试的理论知识.作 ...

  3. app开发学习需要经历哪些流程

    app开发学习需要经历哪些流程?如何零基础入门app开发?以下是知乎热心开发者的经验总结,对学习app开发有很好的参考意义 1.如果没有编程基础的,学习基础知识的过程肯定是必须的. 2.有了一些基础之 ...

  4. HTML5+app开发学习之快速入门篇

    HTML5+app开发学习之快速入门篇 5+app开发概念理解相关 开发环境与支持 快速入门实战 5+app开发概念理解相关 见博文:学习跨平台移动应用开发必须理解的一些概念 开发环境与支持 开发环境 ...

  5. ios App开发的基本流程

    对于苹果App开发,客户都会选择定制开发,价格贵但鞋子是否合脚只有自己知道.买个实用和放心的产品总比抱个免费没用的东西回家要好得多.iOS App软件开发的基本流程比较简单,只是需要注意一些小的细节, ...

  6. Java学习从入门到精通-旧版

    为什么80%的码农都做不了架构师?>>>    Java学习从入门到精通-旧版 http://tech.ccidnet.com/art/3737/20051017/465333_1. ...

  7. 编程大讲坛、坛坛是佳酿--编程大讲坛:C#核心开发技术从入门到精通

    [书名]编程大讲坛:C#核心开发技术从入门到精通 [作者]管西京 [ISBN] 978-7-121-09043-1 [出版社]电子工业出版社 [出版日期]2009年9月 [定  价]79.80元(含光 ...

  8. 项望烽:iOS App开发的那些事儿

    作者:项望烽 毕业于浙江大学 网易云信 iOS端研发负责人 自从做了Team Leader之后,身上权责发生了变化,于是让我烦恼的不再是具体某个功能.界面的实现,而是如何在现有代码的基础上做渐进式的改 ...

  9. 编程大讲坛、坛坛是佳酿--编程大讲坛:Visual Basic核心开发技术从入门到精通...

    [书名]编程大讲坛:Visual Basic核心开发技术从入门到精通 [作者]薛小龙 [ISBN]978-7-121-09057-8 [出版社]电子工业出版社 [出版日期]2009年9月 [定  价] ...

最新文章

  1. 数据导出为Excel(未完)
  2. 第十五届全国大学生智能车竞赛线下比赛成绩和奖项
  3. 就是想让你无法无动于衷:观瑞士的“行为艺术”
  4. JS浏览器加载一个页面的过程
  5. ios 获取是否静音模式_高效人士进阶-IOS
  6. APP自动化测试系列之获取Android的Activity 和 Package
  7. Flask详解(下篇)
  8. 机器学习(西瓜书)读书难点参考资料
  9. es的doc_value对排序字段的作用
  10. [转载]Qt之鼠标样式_vortex_新浪博客
  11. 部署速度翻6倍,知乎从0到1实现部署系统演进及优化
  12. 新安装的centos使用ifconfig无效或者无法使用的解决办法
  13. 联想 Newifi mini Y1 Padavan固件设置5Ghz桥接
  14. 中间件是什么?通俗易懂的解释
  15. linux下添加新用户,并赋予root权限
  16. Asterisk常用命令
  17. Java实现word文档转pdf(无需插件,仅需一个jar包)
  18. 华为手机计算机的隐藏游戏,怎样把华为手机游戏隐藏起来 | 手游网游页游攻略大全...
  19. python财政收入预测分析_Python:Lasso方法、GM预测模型、神经网络预测模型之财政收入影响因素分析及预测...
  20. BeautifulSoup爬取贝壳网成都二手房源信息(附:完整源代码)

热门文章

  1. Android R WindowManagerService模块(3) Window的relayout过程
  2. c++基础:之泛型与标准模板库
  3. 斯坦福大学吴佳俊:通过自然监督编码理解视觉世界
  4. Uncaught ReferenceError: Vue is not defined解决方案
  5. windows msinfo32 display platform role Config
  6. Android 了解intent
  7. java 实现自动生成部署文档_jenkins的部署、实现自动拉取gitlab仓库代码、实现项目中代码自动部署以及项目关联触发......
  8. R语言条件判断语句编程:使用嵌套(一串)if/else语句实现条件逻辑判断、并对指定变量进行条件赋值
  9. 新商品发布接口,商品上下架接口,店铺上传接口,oAuth2.0商品发布新的接口对接方式
  10. 力扣打卡——Day01