本文为大地瓜原创,欢迎知识共享,转载请注明出处。
虽然你不注明出处我也没什么精力和你计较。
作者微信号:christgreenlaw
@autoreleasepool
@autoreleasepool {
在这里边的对象,只要发送过autorelease消息就不用担心释放的问题了
自动释放池销毁前,会给所有发送过autorelease的对象发送一条release消息
!!!(不保证销毁对象,只是发送一条release消息而已)
}
//下面这样写也是一样的
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
Person *p = [[[Person alloc] init] autorelease];
[p run];
// 销毁一个自动释放池
[pool release];
Category
分类的声明
@interface ClassName (CategoryName)
//方法声明
//不允许添加变量
@end
分类的实现
@implement ClassName (CategoryName)
//方法实现
@end
注意事项
- 分类是给类添加方法的,不可用来添加实例变量(根本就不允许)
- 分类中的property只会生成getter/setter声明,而不会生成实现以及对应的实例变量。
- 方法会从父类开始查找,然后是本类,子类
- 分类中可以访问.h中的属性
- 分类中如果有和原类同名的方法,则会使用分类中的方法(开发中忌讳这样写,如果你需要对已有方法进行自定义,请重写或继承,否则会引起很大的困惑)
- 若多个分类有重名方法,调用谁,则取决于编译器最后编译的是哪一个(也就是说每编译一次重名方法都会对原来的方法进行覆盖)
匿名分类(也叫延展 extension)
在iOS中你将天天和这个打交道。
所谓匿名,也就是没有分类名,圆括号中没有内容。一般写在类的.m中,@implement之前。