《iOS6 application development》学习之路:No.2

开始之前先说几个关键字吧 

@property中的weak, nonatomic 和strong

weak告诉系统,补在使用引用对象时,可将其从内存中删去。nonatomic告诉系统,不用担心应用程序的不同部分同时使用该属性的问题。几乎在任何情况下,都将使用这两个特性。

但是有时候需要使用特性 strong代替weak。 weak能让Xcode更高效地将对象从内存中清除。还能避免所谓的循环引用(circular reference),即由于以下的原因,不能把对象从内存中清除:它引用了一个另一个对象,而后者又引用了它。

strong意味着对象将一直驻留在内存中,直到程序员显示地让系统将其从内存中清除。

但是@property (nonatomic) Boolean visiable; 却只有一个属性,因为boolean不是对象,因此声名这种属性的时候,不需要使用关键字weak


int和integer

和Java中的应该是一样的,引用自:http://developer.51cto.com/art/200906/130459.htm 

int是基本数据类型,而integer是复杂数据类型。

初始化时:

int i =1;

Integer i= new Integer(1);(要把integer 当做一个类看)

int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充)

Integer 是一个类,是int的扩展,定义了很多的转换方法

类似的还有:float Float;double Double;string String等 
举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装object的,这是就需要这些内建类型的外覆类了。


好了进入第2节的正题:iOS6 Application Development 第11章:多场景和弹出框。

一个很普通的iOS app也不可能只有一个页面,往往是由很多页面组成的,这些页面之间可以进行切换,可以传递数据等等。其实如果以前做过symbian和android的开发,很简单。但是我觉得Xcode把这个过程做的更加直观和易于理解。

提到多场景切换,就涉及一个常见的问题,循环引用

如果两个类需要彼此访问,而在这两个类中都导入了对方的接口文件,则很可能出现编译错误,因为这些import语句将导致循环引用:一个类引用另一个类,而后者又引用了前者。

为了解决这种问题,需要添加编译指令@class,这样就可以避免接口文件引用其他类时出现循环引用。

例如:

在aClass.h 中添加 #import bClass.h

而在bClass.h中添加@class aClass.h

而在bClass.m中添加 #import aClass.h

这样就避免了循环引用。

书中提到了这样一段话:

在有些情况下,只需要在每个接口文件中添加#import就可以了,因此可以尝试先用这种方法。如果导致应用程序出现错误,再采用第二种方法。

我很好奇的时,在哪些情况下第一种方法可用,因为在我后来coding的过程中,都不管用,我还是需要在第2个类的接口中添加@class ... 才能编译通过。如果有朋友知道,欢迎指教。


手工控制模态切换:

先说下4种过度类型:

在切换的属性中有以下4种动画效果:

cover vertical : 新场景从下往上移动,逐渐覆盖旧场景

flip horizontal: 试图水平翻转,显示背面的新场景

cross dissolve:旧场景淡出,新场景淡入

partial curl: 翻书页一样,显示下面的新场景

个人都尝试了一下,觉得第3种界面不好看,怪不得从没有见应用程序用过,用最多的应该是第2种了把。第4中书页模式,点击上面的部分可以自动退回前一个页面,不需要额外的代码就能实现了。

如果我们想要完成手动控制切换,就需要给这个切换命名,命名的位置和选择动画效果一个页面,最上面的identifier,可以明个名字。然后用下面的代码就可以实现手动切换了。

        [self performSegueWithIdentifier:@"toAnimalChooser" sender:sender]; 
在一个函数里面调用这个方法,就可以实现切换了,@“toAnimalChooser” 就是我们上面说的切换的名字。如果没有这个名字,那你的程序将不会发生变化,我就曾出现这个问题,照着书中代码都写正确了,但是没有给切换起名字,结果找了半天才发现问题所在。


场景的视图背景:

选择场景中的view,然后在属性里面找background,设置成 scroll view texted background color,就可能设置成ios6及之前的通知中心的那种带纹理的背景了。


好了,下一章完整介绍一个自定义选择器的程序,这个程序基本上包含了11章以及12章的所有重点内容。



















上一篇:NSString中的stringByReplacingOccurrencesOfString


下一篇:如何让类对象只在栈(堆)上分配空间?