zoukankan      html  css  js  c++  java
  • ios 必备知识

    OC必备知识


    一、 runtime

    1. runtime 是OC语言的特性,代表运行时。它的表现比如:定义一个数组越界,代码在编译时并不报错,但是运行后会崩溃。

    二、runloop

    2. RunLoop 表示一种运行着的循环

    2.1 一般app启动后,如果不点击任何控件,不会生成runloop ,它默认是没有启动的;

    2.2 runloop 会管理一个自动释放池的创建和释放,在一个runloop 循环结束时会实现自动释放池的释放功能

    三、多线程

    3. 多线程 包括进程和线程,一个进程可以包括多个线程。 分异步 、同步; 一般常用的有GCD 异步延迟,调用主线程 等;

    四、内存管理

    4. 内存

    4.1 主要有代码区、堆、栈;堆中动态进行分配和释放;与堆区别较大的是,栈可以提前到编译时就确定内存地址,而堆很多都是运行时才确定;

    4.2 iOS分ARC和MRR 自动释放,和手动释放; 主要涉及引用计数器,强引用,弱引用等知识;

    4.3 可以通过Istrucements对内存泄漏进行调试;

    4.4 内存吃紧时,会调用- (void) receiveMermeryWarning ; 最终会调用malloc库中的free( ) 函数

    五、runtime 消息机制

    5. runtime的消息机制 OC消息发送与方法发生在运行阶段,而非编阶段;obj——msgSend

    六、链表寻址方式

    6. 链表寻址方式 涉及到算法结构,类似快速比较, 逐个比较

    七、代理,block, 通知的区别

    7.主要区别

    7.1 代理 OC中的代理。 代理运用分为以下几步:1.设置代理,分为必须实现,可选实现;2,设置好后要声明代理属性;3.然后在.m文件中 调用代理属性 4.在其他类中实现代理方法,5.需要先引用头文件,6设置代理;7.实现代理方法;

    7.2 代理:一对一”,对同一个协议,一个对象只能设置一个代理delegate;

    通知:可以一对多,注册通知中心后,不在乎是否接收;而代理在乎实现结果; block:block是一个代码块,它在引用时需要主要循环引用,在block外一般声明 weak self 防止循环引用

    7.3 weak asign copy strong 区别

    7.3.1 使用时,assign 一般定义数据类型,strong 一般定义 模型对象;

    7.3.2 strong 与 weak 的区别主要是 weak 会随之对象本身的消失而消失,而strong和copy 不会,同时,strong时引用计数器会 +1 ; copy 时 会先将旧对象release 在赋予新的对象

    7.4 OC声明属性的关键词;参数 包括了:原子性;读写属性;setter语意方法; atomic多线程访问下的安全保障,但是浪费资源;nonatomic

    禁止多线程,相比atomic节省资源;

    <欢迎交流:gtommy0571@gmail.com>

  • 相关阅读:
    原生微信小程序砸金蛋奖程序代码分析
    git 如何恢复到指定版本--很常用的方法
    cupload.js手动插入数据
    asp.net Core3.1自定义权限体系-菜单和操作按钮权限
    linux 解决docker、docker-compose命令权限问题(sudo)
    Supervisor 安装和使用教程
    php 无限级分类查找父节点所有子节点【找出 某节点的子节点】
    bat echo 输出内容为不同的颜色
    git 提交团队项目代码的流程
    bat脚本 切换到其他盘符
  • 原文地址:https://www.cnblogs.com/tony0571/p/5496347.html
Copyright © 2011-2022 走看看