使用ARC编写简单的Xcode项目

使用ARC编写全新的项目是很容易的。下面用一个简单的项目来说明使用方法。

先看写好后的样子:

    

代码很简单。有两个视图,左边视图提交切换到右边视图,右边视图点返回回到左边视图。

首先是创建项目,使用创建项目向导,这里创建一个单视图应用(Single View Application)。

然后,可见这样界面,勾选下面内容:

项目创建后,第一件事情,是通过IB(Interface Builder)编写第一个界面,这个步骤和ARC无关。

下面要使用IB将姓名和邮箱的变量设置给ViewController,默认创建的ViewController的头文件没有花括号,我们需要提前加上:

因为下面IB拖拽生成IBOutlet需要它。

可直接鼠标右键拖拽生成Outlet变量:

一般只许填写name即可,很少情况下可能需要改变storage,一般都会用weak。

生成的内容如下:

可以看到,IBOutlet前增加了weak标识符。类似的操作,可再为邮箱生成Outlet实例变量:

这时我们观察一下ViewController的m文件,会发现生成的内容和以前手动引用计数有差别:

以前personName是需要release的。

另外,会发现没有了dealloc方法,因为不再需要再该方法中写release实例变量了。

下面再使用IB拖拽出提交方法,这一步和ARC无关:

在m文件中submit空方法中可填写创建新视图的代码。

先创建视图类,这里起名为PersonDetailView,继承UIView。

然后创建它一个新的视图xib文件,供PersonDetailView使用:

带一个供返回使用的按钮,另外,创建了4个label,即,姓名标题和值,邮箱标题和值。

在这里设置xib文件的类:

好了,下面需要在ViewController的submit方法中创建这个视图。

导入视图头文件:

编写代码,通过xib文件创建视图,并加到当前视图上:

这时已经可以运行代码了,可以从第一个视图切换到第二个视图了。

通过IB可以很容易的编写第二个视图的返回按钮,在它方法中填写:

这样界面交互就完成了。

为了传递参数从第一个界面到第二个界面,我们把参数抽象为一个名为Person的类,头文件:

这里属性使用strong关键字,表示它的所有者是Person类。属性原有的标识符是retain,在这里,strong在语义和retain是一样的。

Person的m文件:

dealloc方法可以覆盖,但是因为ARC,不需要再释放成员变量了,因为Person释放的时候,会释放所有它拥有的成员。

写dealloc方法的目的是为了下面监控ARC情况下Person实例是否能正常释放。

我们在ViewController类中用界面变量的值创建Person实例:

这里的局部变量person,实际上默认使用了strong标识符,不过在方法结束时,会被ARC编译时自动加上release语句,因此会释放。

下面需要考虑的是怎样将person实例传递给PersonDetailView,为此,我们在PersonDetailView增加了方法:

在对应的m文件中声明了person实例变量:

这个实例变量是个默认为strong的强引用,因此会在PersonDetailView释放的时候得到释放。

这里多提一句,Xcode4.2使用了LLVM3.0,支持将实例变量写到m文件中。

在setPerson方法中,我们需要设置对应的界面变量值:

好了,这些都做完后,项目就完成了,可以实现本文开始的效果。

另外,我们可以为PersonDetailView也编写dealloc方法:

再次运行项目,当从第二个界面返回第一个界面时,可以看到类似下面的日志:

该释放的实例都得到了释放。

PDF    发送文章为PDF   

这篇文章上的评论的 RSS feed TrackBack URI

Leave a Reply