ios app开发学习流程(入门到精通)

来源:互联网 发布:伊斯兰国 知乎 编辑:程序博客网 时间:2024/05/04 17:13

一、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架构分析

CocoaMVCObjective-CMacRubyOS

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.   
  7. }   
  8.   
  9. //成员方法,类方法,属性定义   
  10.   
  11. @end  
 

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

首先是定义一个UIView的子类

 

Objective-c代码  

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

 

Objective-c代码 复制代码 收藏代码

 

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

 

Java代码 复制代码 收藏代码

 

定义都完成了,到这里其实还看不出这三者是怎么联系起来的。那接下来就要看看,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. }  

 

上面的代码中 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.   
  8. - (void)func1   
  9. {   
  10.     //具体实现,可以加入Model相关的代码   ,界面上的button点击后,调用此函数来实现业务逻辑
  11. }  

 

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

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

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

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

 


 

原创粉丝点击