Objective-C 2.0 with Cocoa Foundation--- 7,对象的初始化以及实例变量的作用域
7,对象的初始化以及实例变量的作用域
?
本系列讲座有着很强的前后相关性,如果你是第一次阅读本篇文章,为了更好的理解本章内容,笔者建议你最好从本系列讲座的第1章开始阅读,请点击这里。?
?
?
到目前为止,我们都使用的是下列方式创建对象
?
else

图7-1,本章程序的执行结果
?
本章程序代码晴点击这里下载。?
?
?
再次强调在实际的编程过程中,尤其是写大型程序多人合作的时候,除非发现BUG,否则不要改写已经生效的代码。这样会产生一些意想不到的结果,从而使其他的弟兄们或者姐妹们对你充满怨言。?7.2,实现步骤
?
第一步,按照我们在第2章所述的方法,新建一个项目,项目的名字叫做07-InitWithAndIvarScope。如果你是第一次看本篇文章,请到这里参看第二章的内容。
?
第二步,按照我们在第4章的4.2节的第二,三,四步所述的方法,把在第4章已经使用过的“Cattle.h”,“Cattle.m”,“Bull.h”还有“Bull.m”, 导入本章的项目里面。然后把第6章里面的“MyNSObject.h”也导入到项目当中。
?
第三步,打开“Cattle.h”,修改成为下面的代码并且保存:
?
????Bull *redBull = [[Bull alloc] initWithLegsCount:4 gender:YES eyesCount:2 masterName:@"that cowboy"]; [redBull setSkinColor:@"red"]; [redBull saySomething];?从第1行到第4行就是调用的initWith来初始化我们的redBull。
?
?
7.5,本章总结?
非常感谢大家对笔者的支持!
?
我们在本章里面介绍了2个比较轻松的话题,一个是实例变量的作用域,这个概念笔者个人认为对有一点面向对象编程经验的人来说,不是什么新鲜的概念了。但是需要注意的是,Objective-C并没有强制我们遵守它的规则,他仍旧为我们提供了违反规则的机会,这一点上根C++比较类似。只要支持指针,就无法避免使用者违反规则。事务都是一分为二的,当我们得到了访问任何变量的自由之后,我们必须为访问这些变量承担后果。
?
第二个话题就是initWith。和其他的面向对象的语言不同,Objective-C没有构造函数,它通过init还有initWith来初始化变量, 我们应该根据具体情况进行具体的分析,从而编写我们的init还有initWith方法。
?
?
来源: http://www.cnblogs.com/yaski/archive/2009/04/19/1439304.html
?
?
?
?
?
?
?
?