iOS开发快速入门教程——3.11节~3.16节
2014-12-15 22:40
309 查看
内存管理:@class关键字
继承某个类,用#import,包含被引用类的变量和方法,效率低只是定义成员变量、属性,用@class,效率高
需要用到变量和方法,可以在.m文件中用#import
循环引用,用@class,用#import报错
当文件大量#import同一个文件,当这个文件改变,所有引用这个文件的类都要重新编译
内存管理:@property参数详解
参数主要分为3类:读写属性:readwrite(默认)/readonly
Setter处理:assign(默认)/retain/copy
原子性:atomic(默认)/nonatomic
Retain:在setter方法中,release旧值,retain新值
Atomic:代表给方法加锁,保证线程安全
Nonatomic:代表方法不考虑线程安全问题,禁止多线程,变量保护,提高性能
Weak相当于assign
Strong相当于retain
内存管理:autorelease
自动释放池 autorelease pool自动释放池是OC里边的一种内存自动回收机制,一般可以将一些临时变量添加到自动释放池中,统一回收释放
当自动释放池销毁时,池里边的所有对象都会调用一次release方法
OC对象只需要发送一条autorelease消息,就会把这个对象添加到最近的自动释放池中(栈顶的释放池)
Autorelease实际上只是把对release的调用延迟了,对于每一次autorelease,系统只是把该对象放入了当前的autorelease pool中,当该pool被释放时,所有对象调用release方法
静态方法返回的对象都是自动释放
静态方法不能访问对象的成员变量
注意:
1.在ARC下,不能使用[[NSAutorelaesePool alloc] init],而应当使用@autoreleasepool
2.不要把大量循环操作放到同一个自动释放池中,这样会造成内存峰值上升
3.尽量避免对大内存使用该方法,对于这种延迟释放机制还是尽量少用
4.Sdk中一般利用静态方法创建并返回的对象都是已经autorelease的,不需要再进行release操作
Category
文件名:类名+分类名称类名:表示继承
类名 ()表示分类
OC中提供了category,可以动态的为已经存在的类添加新的方法,不能增加成员变量
使用category对类进行扩展时,不需要创建自雷
Category使用简单的方式,实现了类的相关方法的模块化,把不同的类方法分配到不同的分类文件中
Category使用场景:
1.在定义类使的某些情况下(如需求变更)可能要为其中的某个类添加新的方法
2.一个类中包含了许多不同种类的方法需要实现,而这些方法需要不同团队的成员实现
3.在使用基础类库中的类时,有可能希望这些类实现一些自己需要的方法:比如写个NSString+Json
protocol
简单来说就是一系列方法的列表,其中声明的方法可以被任何类实现,这种模式成为代理(delegation)模式在iOS和OS X开发中,采用了大量的代理模式来实现MVC中View和Controller的解耦
<>代表实现某个协议
@required表示必须实现的方法,默认为required但如果没实现,编译器也不会报错
@optional表示可选(可实现,可以不实现)
ConformsToProtocol:@protocol(XXX)判断某个对象是否遵守XXX协议
RespondsToSelector:@selector(XXX)判断某个对象是否实现XXX方法
block
^表示是blockBlock封装了一段代码,可以在任何时候执行
Block可以作为函数参数或者函数的返回值,而其本身又可以带输入参数或返回值。它和传统的函数指针类似,但区别是:block是inline(内联函数)的,并且默认情况下对局部变量是只读的
如果外部变量用了__block关键字进行声明,就可以在block内部修改这个变量
Block多用于多线程、异步任务、集合遍历、集合排序、动画过渡
Block和指向函数的指针只有符号区别(^),(*)
@public
@protected 默认 子类可以访问,外界不能访问
@private子类不能访问
->直接访问成员变量
相关文章推荐
- iOS开发快速入门教程——3.1节~3.5节
- iOS开发中通知(Notification)快速入门及推送通知实现教程
- iOS开发快速入门教程——5.1节~5.3节
- iOS开发快速入门教程——3.6节~3.10节
- ios开发kvo模式基础-Key-Value Observing 快速入门
- [非常短]iOS开发入门教程
- ThinkPHP3.1编程开发快速入门教程之IP地址定位
- cocos2d-x跨android&ios平台开发入门教程
- iOS开发入门级别的教程及书籍,供参考。
- (译)cocos2d-x跨android&ios平台开发入门教程
- ThinkPHP3.1编程开发快速入门教程之IP地址定位
- COCOS2D-X跨ANDROID&IOS平台开发入门教程
- iOS开发之UIWebView入门教程
- COCOS2D-X跨ANDROID&IOS平台开发入门教程
- ios开发入门到精通教程-传智播客ios培训学院
- ios开发kvo模式基础-Key-Value Observing 快速入门
- iOS开发之UIWebView入门教程
- (译)cocos2d-x跨android&ios平台开发入门教程
- cocos2d-x跨android&ios平台开发入门教程
- Apple官方IOS开发入门教程[v0.2]