OC-杂谈篇(1)

来源:互联网 发布:红包软件代理加盟 编辑:程序博客网 时间:2024/05/23 00:10

一、@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);
}

0 0