zoukankan      html  css  js  c++  java
  • 自动释放池 消息循环

    运行循环(RunLoop):
    保证程序不退出 (死循环)
    监听所有的事件 点击,触摸等 网络数据加载完成
    特性:没有事件的时候 会进行休眠  一旦监听到事件  会立即响应
     每一个线程都会有一个runLoop 默认是关闭的,只有主线程的runloop 会启动
    
    当一个程序运行起来的时候,只有主线程的消息循环是默认开启的,子线程的消息循环默认是关闭的若想要去让子线程需要实现下面这个方法

      NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(demo) object:nil];

      [thread start];

      // 输入源事件

      [self performSelector:@selector(demo2) onThread:thread withObject:nil waitUntilDone:NO];

    - (void)demo{

       // 若是把这个循环添加在这,那么下面那句永远不会执行,因为运行循环就是一个死循环..程序也不死

    1.    //1. [[NSRunLoop currentRunLoop]run];

        [[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:2.0]];

        NSLog(@"haha");

    }}

    - (void)demo2{

        

        NSLog(@"%@",[NSThread currentThread]);

        NSLog(@"demo2");

    }}

    /输入事件:

    11.输入源事件

        鼠标事件

        键盘事件

        [self performSelector:@selector(demo2) onThread:thread withObject:nil waitUntilDone:NO];

    2.定时器事件

    
    
    


    自动释放池作用: 延迟释放 : 所有用类方法实例出来的对象 都是延迟释放的 所有延迟释放的对象 在出了作用域之后 会被自动添加到最新的自动释放池中 不会立即释放 自动释放池释放后会向池子里的所有对象发送release消息 关系
    1.开始 运行状态处于休眠状态 2.事件触发,运行循环开始工作 3.创建自动释放池 4,所有事件创建的对象都放在的自动释放池中 5.(事件完成)自动释放池结束 向对象发送一次release消息 6运行循环又进入到休眠状态 当事件启动 是RunLoop创建的自动释放池 ARC 中 自动释放池也是工作的

  • 相关阅读:
    纪念Google Reader—Google Reader的最后一天
    SlickEdit 18.0 版本发布 同时更新破解文件
    Linux设置中文的man手册
    Android按钮单击事件的五种实现方式
    使用VBS脚本语音朗读文字
    JavaGUI设置windows主题外观
    EL表达式
    自己封装的一个Ajax小框架
    微信公众号清除内存缓存
    墨刀编辑微信端 原型设计
  • 原文地址:https://www.cnblogs.com/zhubaofeng/p/5239710.html
Copyright © 2011-2022 走看看