zoukankan      html  css  js  c++  java
  • iOS网络编程和防御式编程

    防御式变成的主要思想是:子程序应该不因传入错误的数据而被破坏,哪怕是由其他子程序产生的错误数据。这种思想是将可能出现的错误造成的影响控制在有限的范围内。于是在防御式编程的概念中有一个比较重要的议题,就是子程序出错后,应当怎样处理。一般处理方案无非两种:

    1. 尝试让程序从错误中恢复
    2. 将主程序终止

    这两种方案各有优点。前者让程序在运行过程中更加健壮,不会因为子程序的错误导致主程序错误。而后者,让程序的逻辑清晰,避免了错误恢复带来的程序流程混乱。而我这里推荐使用第二种方式,尤其是在ios的网络编程中。

     

    iOS的网络编程也有两种主要的方式,同步方式和异步方式。同步方式,采用阻塞的方式,线程会阻塞在网络交互部分,等待服务器返回数据。异步方式,多线程并行执行,程序不会因为网络交互而阻塞。在一般情况下使用异步方式,能够发挥多线程的优点。让程序能够有一个良好的体验。但是存在的问题,在异步调用的方式下。程序的函数之间的调用逻辑和回调时机很难掌控。出错之后的处理,也变得有点困难。而相比之下如果采用同步阻塞方式,可以将所有的网络操作写进一个函数里面顺序处理,哪里出错哪里退出。让整个程序的逻辑更加清晰。而在优化体验的时候,可以建立专门的线程来处理这些阻塞方式的网络交互过程。所以但从程序流程逻辑的清晰上来看,阻塞多线程的方式要优于异步多线程的方式。

  • 相关阅读:
    Spring相关知识点
    动态代理jdk和cglib的区别
    keepalived+nginx+tomcat+redis集群环境部署
    MongoDB_4.4 安装和配置
    vsCode 账号间同步 配置,插件
    vue 全局导航 router.beforeEach()
    网页左右两边元素高度自适应,两个元素高度一致,一面高度跟随另一面的高度变化而变化
    git 中 ssh key 的生成
    vscode html 自定义模板
    vscode vue 定义 单文件模板
  • 原文地址:https://www.cnblogs.com/yishuiliunian/p/2789879.html
Copyright © 2011-2022 走看看