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 *:任意多个字符  ?:表示一个字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值