Colin's Nest

iOS 内存调试技巧

前言:

本文会介绍如何快速定位、解决内存问题的一些技巧,如下:

  • signal SIGABRT,EXC_BAD_ACCESS,Memory Leak 问题
  • Breakpoint,Zombie Objects,Address Sanitizer,Instruments,Malloc Stack,Debug Memory Graph,Analyze 的正确使用姿势

iOS App Thinning

关于瘦包这个话题,之前大家讨论的已经够多了。

之所以再写这篇文章,主要是对前段时间工作的一个总结、梳理。同时也补全优化这个系列。

Image and Graphics Best Practices

PS:
本文所得数据测试环境:iPhone 7 Plus,iOS 10,Xcode 9.1

预备知识

解码

Q:什么是解码

A:压缩的图片数据解码成未压缩的位图形式,即二进制数据转换成像素数据的过程。

PS:

这是一个非常耗时的 CPU 操作。

Core Image【4】—— 2018 新特性

Core Image 系列,目前的文章如下:

如果想了解 Core Image 相关,建议按序阅读,前后有依赖。

概述

2018,Core Image 主要更新了三个点:性能优化原型开发以及与 CoreML 的结合

整体更新的不多,但都比较有意思。下面逐一详细阐述。

Core Image【3】—— 2017 新特性

Core Image 系列,目前的文章如下:

如果想了解 Core Image 相关,建议按序阅读,前后有依赖。

对应源码,见最末链接。


概述

先回顾一下 Core Image 目前强大的功能。

  • A simple, high-performance API to apply filters to images,提供简单使用,性能优秀的 API,以及内置各种 CIFiter,方便处理图片
  • Automatically tiles if images are large or graph is complex,大图处理优化
  • Automatically tiles if only a region of the output is rendered,只处理部分区域
  • Each CIFilter has one or more CIKernel functions,自定义 CIFliter
  • Multiple CIKernels are concatenated to improve performance,滤镜链延迟处理,合并成一个

Metal 系列教程

从 2014 年,Apple 正式推出 Metal 到现在,这个 Metal 系列教程,酝酿了很久,却迟迟没有进展。

直到 WWDC 2018,Apple 宣布 iOS 12 将弃用 OpenGL / CL,我想,这或许是个机会。

Apps built using OpenGL ES will continue to run in iOS 12, but Open GL ES is deprecated in iOS 12. Games and graphics-intensive apps that previously used OpenGL ES should now adopt Metal.

这个系列会回顾整理之前学习的内容,有序输出。算是对自己的一个交代,同时也希望,能帮助到那些想要学习 Metal 却不知道怎么下手的朋友。

GLSL 详解(基础篇)

上节在绘制三角形的时候,简单讲解了一些着色器,GLSL 的相关概念,可能看的云里雾里的。不要担心,在本节中,我将详细讲解着色语言 GL Shader Language(GLSL)的一些基本的概念。

PS:
无特殊说明,文中的 GLSL 均指 OpenGL ES 2.0 的着色语言。

iOS 单元测试

什么是单元测试

形象版:

工厂在组装一台机器之前,会对每个元件都进行测试。这,就是单元测试。

官方版:

单元测试是指对软件中的最小可测试单元进行检查和验证

OpenGL ES 渲染基本图元

上篇文章中,已经介绍了 OpenGL ES 的基础环境搭建,并且实现了设置背景色功能。

在本文中,我们将会在上文的基础上,渲染基本图元,三角形。在这个过程中,将会详细介绍可编程图形渲染管线是如何工作的。

最终的效果如下:

2017013028167QQ20170130-174258@2x.png