知识点
1.类的介绍
类是对象的类型,对象是类型的实例。
实例变量:用来区分同一类的不同对象,是描述对象用的。实例变量可以是各种类型:基本数据类型、指针、复合类型、其他类。
实例方法:用来操作一个类的对象的函数,实例方法是给外部的访问接口。
在OC中,使用#import包含头文件。防止头文件被重复包含。
2.类的声明
@interface className:parentClass<protocol,..>
{
- //实例变量的声明
}
method declarations //方法的声明
@end
3.方法的声明:
mType(returnType)name:(type)param name1:(type1)param1….
方法类型 返回值类型 标签名 参数类型 参数与名字
例子:-(id)initWithX:(int)_x andY:(int)_y;
-
- +(int)allNum;
对象方法:-号开头,只能由对象来调用,对象方法中能访问当前对象的实例变量。
类方法:+号开头,只能由类来调用,类方法中不能访问实例变量。
4.消息机制
OC中发送消息的一般格式:[receiver message];
[实例对象 实例方法];
[类 类方法];
5.属性声明
声明property的语法为:@property(参数1,参数2) 类型 名字;
例子:@property(nonatomic, retain) Circle *circle;
其中参数主要分为三类:
读写属性:(readwrite/readonly)
setter语意:(assign/retain/copy/strong/weak)
原子性:(atomic/nonatomic)
各参数意义如下:
readwrite:产生setter/getter方法;
readonly:只产生getter方法;
assign:默认类型,setter方法中实例变量直接赋值,不进行retain操作,主要操作基本数据类型。
retain:浅拷贝,对对象的内存地址的复制,让目标对象指针和源对象指向同一片内存空间。
copy:深拷贝,拷贝对象的具体内容到一块新开辟的空间。
strong:arc中的新属性,类似retain,多个指针指向同一块内存时,只要有一个指向该内存,那么内存就不会被释放。
weak:arc中的新属性,类似assign,多个指针指向同一块内存时,只要有一个不指向该内存,那么内存就会被释放。
nonatomic:禁止多线程,提高性能。
atomic:在使用多线程时,为了防止两个线程相互等待对方导致死锁,用atomic,但是会消耗一定资源。