ObjectC 类的一些问题解析
2015-05-28 19:01
459 查看
在Cocoa框架中,NSObject是所有类的根类。其它类都要从NSObject继承。
@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修饰。
类的定义
类的定义在.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修饰。
相关文章推荐
- opencv+海康摄像头解析二维码出现一些问题
- 【001】JS解析,反解析XML的一些问题
- JavaMail接收邮件,并解析邮件(用于解决一些线上问题)
- 解析xml时遇到的一些问题
- Cocos2d-X3.0bate_关于一些“无法解析的外部符号”的配置问题解决方法
- 在写模版解析时碰到的一些问题,委托真好用
- 进行微信公众号开发过程中的一些问题解析,第1蛋
- 解析xml时遇到的一些问题
- 关于解析json串(串里有汉字)一些问题解决方案!
- android GSON解析的一些问题
- Dom4j解析XML中遇到的一些问题
- 解析PHP中一些可能会被忽略的问题
- 解析xml时遇到的一些问题
- AsyncTask的源码解析及遇到的一些问题
- VisualSVN Server端创建遇到的一些问题解析
- 关于github上倒入项目时会出现的一些问题解析
- iOS使用TFHpple解析HTML遇到的一些问题
- 解析PHP中一些可能会被忽略的问题
- 在写模版解析时碰到的一些问题,委托真好用
- 前几天在搞rss的解析,碰到一些问题