[转载] 淘宝 APP 网络架构演进与弱网破障实践

转载: 原文地址

引言

自 2013 年 ALLIN 无线到今天,已经走过 10 个年头,手淘终端统一网络库 AWCN (Ali Wireless Connection Network) 从淘内孵化,一路过来伴随着手淘业务的发展,经历集团 IPv6 战役、协议升级演进等,逐步沉淀为阿里集团终端网络通用解决方案,是兼具高性能、多协议、可容灾、可观测的终端网络基础统一设施。面对移动互联网络下复杂多变的网络环境,如何提供更稳定可靠的请求性能,保障用户的加载浏览体验、更好的支撑业务发展,是我们始终探索的命题。

阅读全文 »

UITextView 模拟标签功能

需求需要实现一个 类似于微博文本中 标签的能力, 一般我们用 YYTextView 配合 YYTextParser 很容易可以写出来, 参考, 但是当我们必需需要用 UITextView 来实现的时候, 就很麻烦了, 因为 YYTextView 不是继承的 YYTextView, 他们是兄弟关系, 强行替换需要修改所有引用该文本的逻辑, 风险较大.
怎么基于 UItextView 实现一套标签能力呢?

阅读全文 »

Cocos小游戏开发-TypeScript

参考:

  1. 使用 TypeScript 脚本
  2. TypeScript 教程

TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个严格超集,并添加了可选的静态类型和基于类的面向对象编程。TypeScript 的设计目标是开发大型应用,然后转译成 JavaScript 运行。由于 TypeScript 是 JavaScript 的超集,任何现有的 JavaScript 程序都是合法的 TypeScript 程序。

阅读全文 »

Cocos小游戏开发学习笔记

Cocos 是全球领先的游戏引擎,拥有强大的跨平台开发能力,同时具备易上手、轻量化、开源、免费、高能等优势。Cocos 小游戏系列文章将记录1个月内了解并掌握 Cocos 专项技能,最终达到开发 Cocos 相关游戏项目的能力。

阅读全文 »

转载: 原文地址

[转载] 头条稳定性治理:ARC 环境中对 Objective-C 对象赋值的 Crash 隐患

ARC 环境下在多线程中执行赋值代码可能会产生野指针,导致 EXC_BAD_ACCESS 崩溃。
这种崩溃发生的概率很低,在开发和灰度阶段即使执行到相应代码也很难崩溃,因此容易遗漏到正式环境。在上亿级用户的 App 往往会成为 Top 问题,对指标造成影响,并且很难排查。
今日头条在治理 Crash 的过程中彻底解决了数十个此类崩溃,发现其具有一定共性。本文详细分析崩溃发生的过程,以及总结了容易出现问题的场景,希望在大家遇到此类问题时能提供一些思路。

阅读全文 »

转载: 原文地址

[转载] 抖音 Swift 编译优化 - 基于自定义 Toolchain 编译提速 60%

本文重点探讨全部模块化后带来的依赖解析瓶颈,主要包括对头文件增量编译分析等内容。
优化方案基于 Swift Toolchain 源码,本文不再探讨 Toolchain 相关基本概念及配置流程等,仅聚焦方案本身。

背景

随着混编落地的业务场景越来越多,越来越大,开发中出现的性能痛点开始显现,问题很明显集中在被 Swift 环境所依赖的 OC 仓的头文件改动上。因此基建架构把重点放在接口层依赖的性能分析上,力求解决性能瓶颈。
抖音基础技术团队借助自定义 Toolchain 能力,通过自定义编译参数,裁剪 Clang Header 指定内容,最终实现编译提速 60% 。
本方案已于 2022 年 11 月底上线,在抖音稳定运行近 5 个月。下面就让我们一起回顾下整个方案从提出到落地的全过程。

阅读全文 »

转载: 原文地址

Block 内调用 super 引发的循环引用

TLDR

  1. 介绍了两种较为少见的 Block 循环引用,并提供了解决方法。
  2. 宏的替换在 Preprocessed 阶段,super 的变更在 compile 阶段,因此对 self 进行 weak/strong dance 并解决不了 super 导致的循环引用问题。
  3. 同时通过 RewriteObjc 与 Disassembly 的方法从底层原理上分析了 super 与 Block 调用的本质,辅以内存实际情况与示意图方便加深理解。穿插了 objc_msgSend Stub 相关的知识。
  4. 验证了在 Block 中调用 super 时,RewriteObjc 生成代码的一个 bug 。
阅读全文 »