一、@autoreleasepool
参考资料:http://www.tuicool.com/articles/nEbmUnE
知识补充:
- MRC( Mannul Reference Counting ) / ARC( Automatic Reference Counting ) 分别对应 手动引用计数 / 自动引用计数
等价于:
NSAutoreleasePool *pool = [[ NSAutoreleasePool alloc] init];
NSString *str = [[[NSString alloc] initWithString: @”str”] autorelease]; //给对象发送autorelease的信息,当NSAutoreleasePool结束时,标记过“autorelease”的对象会被释放,而ARC可自动发送autoreleasepool。
[pool release]; //str is released
⚠️适合于循环中的临时变量,每次循环都会被释放。(#?难道不会耗费时间吗?#)
二、#import可保证头文件(预编译头文件 -> 一种经过压缩、摘要形势的头文件)只被包含一次,而不论在文件中出现多少次。
三、框架
- 定义:一种聚集在一个单元的部件集合。包括头文件、库、图像、声音文件。
- 苹果公司将Cocoa、Carbon、QuickTime、OpenGL等技术作为框架集提供。Cocoa包含Foundation和Application Kit,其中Foundation处理的是用户界面之下的层(layer)中的特性,例如数据结构和通讯机制。(#?层是什么鬼?#)
- CF -> Core Foundation(与Cocoa一样)
每个框架都有一个主头文件,包含各个头文件。例如 < Foundation/Foundation.h >
⚠️Cocoa的函数将使用NS前缀
NS -> NextSTEP,1996年被苹果收购
四、%@ -> NSString , %s -> String
五、 结构体赋值
typedef struct {
int a , b , c;
} St;
//赋值
St t1 = { 1,2,3 };
六、@interface
- 传递给编译器有关该类的信息(数据成员)
七、@implement
- 可在@implement定义没有在@interface中声明的方法,作为仅在类中使用的私有方法
- ⚠️调用含有参数的方法时,eg: [firstClass returnInt: 3] ,方法将3作为self参数自动传递:self->param = 3;
八、继承调度方式
- 当代码发送消息时,oc的方法调度程序在当前类搜索响应的方法,否则搜索超类。
九、Xcode快捷键
- 代码块左右移动 command+[ or ]
- 打开/关闭补全代码 esc
十、NS Array
- ⚠️两个限制:
- 只能存储oc对象,不能存储c语言中的基本数据类型(如 int \ float\enum\struct)
- 不能存储nil( nil作为结束标志 )
- 快速枚举:
for (NSString *str in array) {
NSLog(@”%@”,str);
}