2021笔记

2021笔记

  • static修饰局部变量

    局部变量:在函数/方法/代码块内声明的变量。它的生命周期、作用域都是在这个代码块内。

  • 当全局变量使用static修饰时

    其生命周期没有变,依旧是在程序结束时才销毁。但是其作用域变了,以前是整个源程序(用extern),现在只限于申明它的这个文件才可见,即使用extern引用也不行。

  • 异步绘制

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yl7fo6YY-1690702026117)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled.png)]

  • 离屏渲染

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mmkoLcPC-1690702026118)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%201.png)]

  • 分类可以添加:

    1. 实例方法
    2. 类方法
    3. 协议
    4. 属性(需要用关联对象添加get set方法,没有成员变量,但是可以用关联对象添加属性,但不是真正的加在该类上面,会加在一个全局的hashmap中管理)
  • 当该类有多个分类,分类中出现一样的方法,那么最后编译的分类中的方法会生效,把前面的覆盖了

  • 分类和扩展的区别

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kOpjsXQT-1690702026119)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%202.png)]

  • KVO监听的是属性的set方法,不是成员变量

  • 属性关键字atomic是指对该属性的赋值和获取是线程安全的,对其的操作不保证安全(数组添加元素删除元素)

  • weak和assign的区别

    1. assign既可以修饰基本数据类型也可以修饰对象,weak只能修饰对象
    2. assign修饰的对象被销毁后,指针还是会指向之前的内存,weak会置为nil
    3. assign适合修饰基本数据类型,因为基本数据类型是放在栈上的,自动销毁
  • NSMapTable可以对象映射对象

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OjIxoC6t-1690702026119)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%203.png)]

  • 经典死锁问题的图解(注意:是队列引起的死锁)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NcqdpEB0-1690702026119)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%204.png)]

  • 腾讯的一道很难的多线程题

    解释:输出为13,performSelector方法失效了,因为这个代码运行在全局并发队列中的一个线程中,但GCD所维护的线程默认不开启runloop循环,performSelector:withObject:afterDelay必须所在线程开启runloop才行,因为用到了延时,底层是开启了个计时器,但是计时器需要放到runloop才行,如果用performSelector就不会有这个问题

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-31FTHnIn-1690702026120)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%205.png)]

  • 多读单写的实现(可以并发读取,但是写入操作只能串行)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A27qmoc5-1690702026120)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%206.png)]

  • runloop是一个循环,处理事件和消息的对象,没有事件时,可以休眠,有事件时立刻唤醒

  • @synthesize和@dynamic

    1. @synthesize 的作用:是为属性添加一个实例变量名,或者说别名(带下划线的_name)。同时会为该属性生成 setter/getter 方法。
    2. 禁止@synthesize:如果某属性已经在某处实现了自己的 setter/getter ,可以使用 @dynamic 来阻止 @synthesize 自动生成新的 setter/getter 覆盖。
  • 时间复杂度O(n),代表这个操作需要n步骤,时间复杂度代表这个操作需要多少步骤,比如O(n^2)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ndlUEg7C-1690702026120)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%207.png)]
  • NSCache

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7ePF3klN-1690702026121)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%208.png)]

  • 循环引用的几种情况

    1. 代理

    2. block

    3. NSTimer(使用中间对象来弱持有timer对象和原对象,或使用带block的定时器方法)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2HfbR2K0-1690702026121)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%209.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rYr2S1r5-1690702026121)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%2010.png)]

  • 模块化开发的好处

    多人开发时,可以单独开发自己的模块,效率高

    多个模块拆分开来,目录清晰,功能独立,解耦

    其他人引用自己开发的模块时,可以只调用入口文件,不必考虑实现文件,即使实现文件没导入也不会报错闪退

  • BOOL result1 = [err caseInsensitiveCompare:@“7B”]==NSOrderedSame;// 不区分大小写比较

  • 自定义对象和容器累对象(nsstring)的深拷贝浅拷贝是不一样的

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBke3pG1-1690702026121)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/Untitled%2011.png)]

    iOS深拷贝和浅拷贝_风一样自由-CSDN博客_ios深拷贝和浅拷贝的区别

  • NSSet和NSArray区别

    iOS学习之NSSet 和 NSArray的区别

  • assign修饰的对象是不增加引用计数的,只有strong,浅拷贝

  • 消息传递

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hiTNL76o-1690702026122)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/3E8F4554-DB67-4C6F-8857-FBF537D8259A.png)]

  • 内存管理

    iOS 内存管理

  • ARC是编译器和runtime共同协作的,通过动态插入release,retain等

  • 为什么weak指针指向的内存空间最后会被置为nil,因为在dealloc中有相关逻辑

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gs2VwQkn-1690702026122)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/068206BA-0929-4F47-A469-0FC91B79D6C0.png)]

  • 每个对象都有一个弱引用数组表,用来管理曾经他被弱引用的指针对象,最后通过这个弱引用数组表把所有的都置为nil

  • autoreleasepool的原理

    哨兵对象:在嵌套autoreleasepool时,就是加了个哨兵对象,就是为了区分各个autoreleasepool的管理区域。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pmJG93O0-1690702026122)(2021%E7%AC%94%E8%AE%B0%209a9ab49c793346e4affc376e17a12c5e/ECAE7551-FEB2-4142-9769-2BF3C6FBB8D1.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值