类目与协议
类目(category)
定义类目的文件命名规则:类名+类目名称 如NSString + Revert
类目的局限性
类目不能为类扩展实例属性
如果覆盖现有的方法,以前的方法将不能使用
延展
在类的实现文件.m中定义类目,叫延展
——————————————————
协议 (
Protocol )
协议是定义了一组方法,让其他类实现
协议本身不是类 只声明不实现
@required :表示必须实现的方法
@optional : 表示可选的实现方法
#warning 警告
#pragma mark - 协议方法
——————————————————
定时器(NSTimer)
定时器是让程序定时执行某一个方法
开启定时器
[ NSTimer scheduledTimerWithInterval : 间隔时间
target : self
selector : @selector( 调用的方法 )
userInfo : @“ 参数 nil ”
repeats : 是否重复YES ];
定时器不是让代码停滞在这里,而是在这里挂了一个任务
关闭定时器
[ time invalidate ]
————————————————————
代理(委托)设计模式 Design Pattern
提高程序的可扩展性和维护性 delegate 代理对象
setDelegate :设置代理
id(协议名)对象名 (代理对象)
arc 4 random()随机数
———————————————————
内存管理
内存管理是关于如何管理对象生命周期的编程原则 基本数据类型不需要管理内存
OC中得内存管理只针对OC中得对象,所有的对象都继承与NSObject
ARC 自动管理内存
MRC 手动管理内存
GC 垃圾回收机制(java)
————————————————————————
引用计数
黄金法则
alloc copy retain
release autorelease 释放 相互对应
dealloc 方法
当对象的计数值为0 系统自动调用dealloc方法
- (void)dealloc {
//释放对象的所有权
[ _dog release ];
[ super dealloc ];
}
EXC 野指针:如果一个对象已经销毁了 ,不能调用方法了
@property的使用
1)、可以为一个属性自动生成set 和get方法
2)、自动生成属性,前面加下划线的
修改默认生成的属性名:@synthesize name = $name;
@property ( nonatomic , retain/ copy/ assign, readwrite/ readonly )NSString
*name;
readwrite 生成set 和get 方法
readonly 只生成get 方法
———————————————————————————
数组的内存管理
将对象添加到数组中,对象的计数值会被数组+1
将对象从数组中移除,会-1
数组销毁或者 removeAllObjects ,会给数组中每一个元素release都销毁
[ array removeObjectAtIndex:1 ] 移除数组中下标为1的元素,同时release
————————————————————————
自动释放池
OC中内存自动管理机制
放入时计数值不变,销毁时对象-1
@autoreleasepool{
autorelease 将对象添加到池子中(会将对象添加到离它最近的池子中)
} 当自动释放池销毁时 每一个对象都release一次
————————————————————————
类方法创建的内存管理
+ (Dog
*)dog{
Dog
*dog = [[Dog alloc]init]
return [dog autorelease];
}
新语法创建的内存管理
NSArray
*array = @[@“zhangsan”,@“lisi”];
都不需要release
Car
*car = [[[Car alloc]init]autorelease];
———————————————————————————————————
循环引用
黄金法则
—————————————————— -
沙盒
单独封闭的文件夹
—————————————————
KVC (Key Value Coding)键值编码
设置和访问
[ setValue :@“Jack” forKey:@“name” ] 如果是基本数据类型得先封装@12;
[ setValue : @“ “ forKeyPath : @“book.name” ];键值路径
获取 NSString *str = [ person valueForKey:@“name” ];
KVC的简单运算
@ “book . @count” 个数
@ “book . @sum._price” avg , min , max
——————————————————————————
KVO ( Key Value Observing) 键值的观察者
[child
addObserver:self
forKeyPath:@"tired"
options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew
context:nil];
通知 [ NSNotificationCenter defaultCenter ] addObserver:
发送 postNotificationName
移除 [ NSNotificationCenter defaultCenter ]remove
————————— ————————— —————
谓词的使用
通过过滤器的条件,将符合的对象保留下来
...[ NSPredicate 类 predicateWithFomat :“age < %ld”,30]
逻辑运算符 IN 包含 (数组)
注意 : 字符串用‘’
关键字
以,,开头 BEGINSWITH
以,,结尾 ENDSWITH
包含 CONTAINS (字符串)
like *:任意多个字符 ?:表示一个字符

被折叠的 条评论
为什么被折叠?



