@interface Tire: NSObject @end //Tire @implementation Tire -(NSString *) description{ return (@"i am a tire . i last a while"); }
1.description方法的作用类似于java中的 toString(),可以通过定义description方法来达到自定义NSLog输出的类的内容的目的。如:
Tire* tire=[Tire new] NSLog(@"%@",tire);
输出的结果就是:
i am a tire . i last a while
2.类的初始化
以下是一个car类的初始化,该类包含了一个Engine(发动机)和一个Tire(轮胎)数组:
声明部分
@interface Car: NSObject { Tire* tires[4]; Engine* engine; } -(void) print; @end//Car
实现部分
@implementation Car -(id) init{ if(self=[super init]){ engine=[Engine new]; tires[0]=[Tire new]; tires[1]=[Tire new]; tires[2]=[Tire new]; tires[3]=[Tire new]; } return (self); } -(void) print{ NSLog(@"%@",engine); NSLog(@"%@",tires[0]); NSLog(@"%@",tires[1]); NSLog(@"%@",tires[2]); NSLog(@"%@",tires[3]); }//print @end //car
init方法会在对象内存分配后自动执行,使对象处于可用状态。
3.
if(self=[super init]){
?该句的作用是防止父类在初始化过程中返回的对象不同于原先创建的对象?
[super init]的返回值为一个id型数据,描述了被初始化的对象。
4.添加存取方法。setter/getter方法的写法:
以
Engine* engine;
为例
-(Engine*) engine{ return (engine); }//engine -(void) setEngine:(Engine*) newEngine{ engine=newEngine; }//setEngine
objective-c中的getter方法为了避免和Cocoa中的用法混淆,不使用getxxx做为getter方法的前缀。get在Cocoa中有比较特殊的含义,一般使用get前缀的方法名,其他程序员认为这个方法需要将指针作为参数传入。
setter方法是以set作为前缀,这点和很多其他语言一样。
5.objective-C中所有对象间交互都通过指针来完成