Objective-C,
投稿于 被查看 26818 次 评论:68
Objective-C,
类目与协议 类目(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 *:任意多个字符 ?:表示一个字符
相关文章
- 暂无相关文章
用户评论