欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

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 *:任意多个字符  ?:表示一个字符

相关文章

    暂无相关文章

用户评论