美文网首页
iOS经典博客

iOS经典博客

作者: upworld | 来源:发表于2018-08-01 17:05 被阅读7次

1,刨根问底 self super

知识点
1,super 结构体

struct objc_super {
   __unsafe_unretained id receiver;
   __unsafe_unretained Class super_class;
};

2,class 默认实现

- (Class)class {  
    return object_getClass(self);  
}  

3,重写class 调用类方法不会递归

@implementation Father
- (Class)class{
    return [Father class];
}
@end

2,Run Loop 记录与源码注释

Run Loop 知识点
1,CFRunLoopPerformBlock,如果符合当前运行模式,则下一个运行时运行
2,如果运行模式不一致,不会强制切换模式,会等到下一个模式促发的运行

  kCFRunLoopDefaultMode 模式下执行CFRunLoopPerformBlock,会一致等UITrackingRunLoopMode促发才执行下面代码
    CFRunLoopPerformBlock(CFRunLoopGetCurrent(), (CFStringRef)UITrackingRunLoopMode, ^{
        [self test];
    });

- (void)test{
    if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) {
        NSLog(@"cjw cjw isMainQueue");
    }
}

3,isEqual & hash

1,isEqual 需要重写
2,hash 需要重写

4,MainQueue or MainThread

1,主队列(MainQueue)里面block 一定都在主线程执行。
GCD中将任务提交到主线程的主队列即dispatch_get_main_queue()时,这里的任务是由RunLoop负责执行。RunLoop和线程绑定。所以上面结论没毛病。

试试下面代码
dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSLog(@"cjw cjw %@",[NSThread currentThread]);
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"cjw cjw %@",[NSThread currentThread]);
});
});

2,主线程(MainThread)不一定都在MainQueue里面执行

下面这段代码说明MainThread可以在其他Queue里面执行
  dispatch_queue_t queue = dispatch_queue_create("testQueue", DISPATCH_QUEUE_SERIAL);
  dispatch_sync(queue, ^{
      if ([NSThread isMainThread]) {
          NSLog(@"cjw cjw is mainthread");
      }
      if (strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0) {
          NSLog(@"cjw cjw isMainQueue");
      }
  });

相关文章

  • iOS经典博客

    1,刨根问底 self super 知识点:1,super 结构体 2,class 默认实现 3,重写class ...

  • 搜索导航

    目录 iOS英文博客 iOS中文博客 iOS英文博客 raywenderlich nshipster appcod...

  • iOS开发优秀博客和软件推荐

    iOSBlogAndTools iOS开发优秀博客和软件推荐 iOS开发中文博客 iOS开发工具 iOS开发网站 ...

  • runtime总结

    iOS开发之Runtime 苹果官方文档 博客-iOS基础 iOS开发系列--并行开发其实很容易 优质博客列表 优...

  • 技术网址

    好的iOS博客网址 devzhang的博客

  • iOS学习资料整理及前端一部分

    ios相关 ios-app开源项目 ios-app开源项目 唐巧的博客 iOS开发常用三方库、插件、知名博客等等 ...

  • ios 传送门

    iOS github 开源项目集合 iOS资源库列表<强力推荐> 码农人生博客 iOS 调试基础方式 一个好博客 ...

  • 优秀博客一览

    转载自:技术风骚的牛人博客iOS 开源库、文章、源码整理iOS技术必看—库和框架大全中文 iOS/Mac 开发博客...

  • iOS CAShapeLayer & UIBezierPath画

    参考笔者博客或者博客: [iOS CAShapeLayer & UIBezierPath画线、画图: https:...

  • iOS经典面试题总结--内存管理

    iOS经典面试题总结--内存管理 iOS经典面试题总结--内存管理

网友评论

      本文标题:iOS经典博客

      本文链接:https://www.haomeiwen.com/subject/kservftx.html