1.@class关键字的使用
#import <Foundation/Foundation.h>
//使用@class声明类(在.h中只需要类的声明,不需要知道变量和方法,不需要import .h文件)
@class Person;
NS_ASSUME_NONNULL_BEGIN
@interface ClassStudy: NSObject{
Person *_p;
}
@end
NS_ASSUME_NONNULL_END
2.@property关键字参数
//默认不写参数 默认assign
@property int age;
//默认参数代表set和get方法
@property(assign) int a;
//代表线程安全
@property(atomic) int b;
//代表不需要关注线程安全
@property(nonatomic) int c;
//代表自动实现set方法的时候,release旧的值,retain新的值
@property(retain) NSString *d;
//代表生成set和get方法
@property(readwrite) int e;
//代表生成get方法
@property(readonly) int f;
//可以多个参数一起写
@property(nonatomic,readwrite) int g;
3.autorelease的使用
@autoreleasepool {
Person *per2 = [[Person alloc] init];
//调用autorelease表示,当前的对象加入autoreleasepool,当autoreleasepool销毁的时候,会调用回收池中每个对象的release方法
//如果在for循环中创建的对象,不适合在回收池中释放,回收池只有销毁的时候才会释放对象,会导致对象延迟释放占用内存
[per2 autorelease];
}