ObjectC 类的一些问题解析

来源:互联网 发布:氟硝西泮片淘宝店 编辑:程序博客网 时间:2024/05/01 06:29

在Cocoa框架中,NSObject是所有类的根类。其它类都要从NSObject继承。

类的定义

类的定义在.h头文件里定义,如:

@interface MyClass:NSObject{ NSString *name; NSNumber *age;}@property(nonatomic,retain)NSString *name;@property(nonatomic,retain)NSNumber* age;-(id)initWithName:(NSString*)string;@end

类的定义由@interface开始,到@end结束

类名后面紧跟冒号和父类

大括号定义成员变量

@property声明属性

方法放在成员变量后。


属性不是必须要有成员变量对应。如果上面没有定义成员变量,oc会自动提供与属性名同名的实例变量。

在.m文件里,使用@synthesize,编译器会自动给name、age加上get、set方法。

@impletation@synthesize name,age;

nonatomic的意思是对属性进行操作时,是线程不安全的,多线程环境下,该属性很可能不同步。加nonatomic,该属性不会在多线程下使用,相对会获得更好的性能。

retain关键词,意思在编译器自动生成的set方法里,对实例变量进行retain,如果使用int,float,id等,要使用assign替代retain。

在Object-C里,使用retain的属性在赋值后一直到对象销毁之前始终可用。如果实例变量或属性不是retain,对属性赋值后,再访问这个属性,这个属性就变成空了。


属性还可以用readonly,readwrite修饰。

0 0