一、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是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只支持单继承,但可以实现多个协议(接口),语法如下:
- @interfaceChild:Parent<Protocol1,Protocol2>
- {
- //成员变量定义
- }
- //成员方法,类方法,属性定义
- @end
@interface Child : Parent <Protocol1,Protocol2>
{
//成员变量定义
}
//成员方法,类方法,属性定义
@end
有了以上的知识后,我们就可以来定义自己的UIView了。
首先是定义一个UIView的子类。
然后定义一个Protocol,按照Cocoa的习惯,一般它以delegate结尾,熟悉C#的同学应该知道它的意义。其实不论是接口,委托,还是回调函数,本质上都做了一件事情。就是定义了一个操作契约,然后由用户自己来实现它的具体内容。
完成以上两步之后就需要设计自己的UIViewController了。一般简单的做法,可以让这个Controller来实现上面定义的MyUIViewDelegate。在Cocoa框架中,很多控件和它的Controller都是采用的这种方式。
定义都完成了,到这里其实还看不出这三者是怎么联系起来的。那接下来就要看看,MyUIView和MyUIViewController的具体实现了。
首先是MyUIView的实现代码,假设在MyUIView在发生某个事件后会调用doSometing方法(按钮事件)
- -(void)doSomething
- {
- if(delegate!=nil)//这里的delegate就是UIView定义时候的一个委托对象
- {
- [delegatefunc1];//[]表示对一个对象发消息,如果在Java中会写成delegate.func1()
- }
- }
- (void)doSomething
{
if( delegate != nil ) //这里的delegate就是UIView定义时候的一个委托对象
{
[delegate func1]; //[]表示对一个对象发消息,如果在Java中会写成delegate.func1()
}
}
上面的代码中 nil 相当于 Java中的 null,这里的意思就很明显了,如果delegate委托对象不为空,则调用相应的方法,但是这个delegate委托对象的方法在哪里实现呢。可以看一下MyUIViewController的定义,它实现了MyUIViewDelegate。所以这个方法当然是由它来实现。代码如下
- -(id)init
- {
- MyUIView*myView=[[MyUIViewalloc]init];//对MyUIView进行初始化
- myView.delegate=self;//将MyUIViewController自己的实例作为委托对象
- self.view=myView;
- }
- -(void)func1
- {
- //具体实现,可以加入Model相关的代码 ,界面上的button点击后,调用此函数来实现业务逻辑
- }
- (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相关代码)
分享到:
相关推荐
iosapp入门到精通.pdf
IOS从入门到精通,简单实用的文档,已经开过,还是很不错的
iOS开发基础理论知识、 视图、视图控制器、多媒体、数据处理、常用插件、信用卡卡号识别、自动化测试、网络访问、多线程、ShareSDK社会化分享、CoreImage、CoreText、CoreML机器学习、ARKit增强现实、面部检测、...
ionic 手机App从环境搭建到创建app ,包含ios,android
6.3 精通移动App应用服务程序开发 熟悉轻开平台针对移动App(json格式)的规则及开发例子 除了基本开发标签语言及表达式(参见同一下载包中的开发手册)外,轻开平台特别针对移动App最常用的json文本格式开发的对应...
本课程详细介绍了IOS开发环境搭建及开发工具的使用,讲解了IOS开发常用视图控件的使用,还讲解了一个实用的功能实例:APP启动引导页的开发。
本文全面介绍了从思路到应用之间的一切开发过程,为不可多得的入门及精通书籍。
Android 开发从入门到精通 新版Android开发教程及笔记-完整版 《Android中文教程》中文版 《android基础教程合集》 Android实例教程 会员贡献索引贴 实用Android开发工具和资源精选 APK权限大全 - Android必懂知识...
java版飞机大战源码 学习日志 前言 这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的...MySQL5.7从入门到精通(搁置) PHP精要版 App后台开发和运维架构(搁置) JavaScript_DOM编程艺术第二版(中文版
一个资源套装,包含了: AxureRPProPortable.rar Axure8移动元件库超全54.3MB.rar Axure RP8扩展元件库V1.2版.zip ...Axure RP 7.0 从入门到精通.rar AXURE RP8实战手册 网站和APP原型制作案例精粹.pdf