变量名称必须以字母或_开头
-(void)print,表示是一个实例方法(instance method);+(void)print,表示是一个类方法(class method)。
类方法可以用于创建对象,一旦调用一定要release。
字符串前面用@,如 NSString
*name = @"Chase";
使用id来表示一个对象,实际就是指向对象的指针,但如果明确类型时,应避免使用id,因为不容易看出对象的类型。
1. 构造方法:init
一般都需要重写构造方法
-(id)initWithObject1: (type) object1 andObject2:(type) object2{
if (self=[super init]){ //判断不为空,便赋值
_object1=object2; // 给成员变量赋值
_object2=object2;
}
}
在main函数中可以直接赋值
Student *stu=[[Student alloc] initWithObject1: a andObject2:b]
NSLog(@"%I and %i", stu.Object1, stu.Object2);
这里的stu.后面的是调用的方法,这个调用的是get方法
self. 后面调用的才是成员变量。
1. description 方法
不需要在.h文件中声明,因为这是NSObject的成员方法
可以在.m中重新定义实现
如果不实现自己description 就会调用nsobject的,输出首地址
重写父类方法
当使用%@打印一个对象是,会调用此方法
-(NSString *)description
{
NSString *str =
[NSString stringWithFormat:@"name:%@ age:%d sex:%@",_name,_age,_sex];
return str;
}
能输出实例变量的值,但须记住其返回值一定是NSString类型
1. @property 类型 成员变量
替代:set 和get方法的声明
2. @synthesize 成员变量
替代set 和get方法的定义。
在Xcode 4.5环境下,可以省略@synthesize,并且默认会去访问(_成员变量)
//如果找不到(_成员变量),会自动生成一个叫(_成员变量)的私有变量
在object-c中,系统自动会为每个创建的对象保存一个引用计数器。当对象被创建时,引用计数设置为1,每一次必须保持该对象时,需要发送(即调用)retain来使得引用计数加1。不再需要对象时,可以发送release消息,使得引用计数减1。当引用计数为0的时候,系统就会释放它的内存(通过向对象发送dealloc消息,也就是真正地去回收对象的内存)。另外,可以用retainCount来得到这个对象的引用计数,返回的类型是NSUInteger整数。基本的调用方式如下:
[obj retain];
[obj release];
[obj retainCount];
//在.h中有声明,不必声明dealloc方法
一般会重写dealloc方法,用于验证对象是否被释放
dealloc只会被调用一次。
-(void) dealloc {
printf( "Deallocing ClassA\n" );
[super dealloc];
}
谁创建,谁释放
谁alloc 谁 release
谁retain 谁 release
谁copy 谁 release
@class 用在 .h 文件中,因为文件只是声明,所以只需要知道他的类的存在,这时编译器不再需要处理整个.h头文件,会适当提高效率。
当前类需要引用类中的方法,仅用@class指令时不够的,因为编译器需要 更多信息,比如:该方法中有多少参数,参数是什么类型,方法的返回类型等,而@class仅仅是提供了一个已知的类名称,此时只能用#import
“.h”。
尤其是在相互嵌套的时候 NSObject 不能用@class, 因为需要知道夫类存在哪些方法, 在子类中才不会重复声明

被折叠的 条评论
为什么被折叠?



