一、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代码
@interface Child : Parent <Protocol1,Protocol2>

{

//成员变量定义

}

//成员方法,类方法,属性定义

@end

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

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

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

Objective-c代码

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

Java代码
: UIViewController <MyUIViewDelegate>
{
//成员变量
}

//成员方法,类方法,属性

@end

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

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

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

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

Objective-c代码
– (id)init
{
MyUIView *myView = [[MyUIView alloc] init]; //对MyUIView进行初始化
myView.delegate = self; //将MyUIViewController自己的实例作为委托对象
self.view = myView;
}

– (void)func1
{
//具体实现,可以加入Model相关的代码 ,界面上的button点击后,调用此函数来实现业务逻辑
}

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

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

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

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