iOS开发体验优化方案

随着Flutter等跨端框架的出现,业务开发同学经常需要在Android/iOS上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是iOS开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼iOS开发体验。

43次阅读  |  7天以前  |  阅读全文 »

iOS14:再见了,“流氓”APP!

最近和苹果有关的重大消息可能就是从8月1日开始,AppStore中国区火速下架未获版号的游戏APP,数量超过30000款,之前小智就和大家说过,这未必不是一件好事,众多低质和“流氓”APP将被最大限度隔绝在iOS系统之外。

76次阅读  |  9天以前  |  阅读全文 »

iOS 14 苹果对 Objective-C Runtime 的优化

Objective-C 是一门古老的语言,诞生于 1984 年,跟随 Apple 一路浮沉,见证了乔布斯创建了 NeXT,也见证了乔布斯重回 Apple 重创辉煌,它用它特立独行的语法,堆砌了 UIKit,AppKit, Foundation 等一个个基石,时间来到 2020 年,面对汹涌的"后浪" Swift,"老前辈" Objective-C 也在发挥着自己的余热,即使面对越来越多阵地失守,唯有“老兵不死,只会慢慢凋亡"才能体现的悲壮。今年,Apple 给 Objective-C Runtime 带来了新的优化,接下来,让我们深入理解这些变化。

197次阅读  |  1月以前  |  阅读全文 »

iOS14 隐私适配及部分解决方案

在刚刚结束的线上 WWDC 2020 发布会上苹果向我们展示了新的 iOS14 系统。iOS14 的适配,很重要的一环就集中在用户隐私和安全方面。
在 iOS13 及以前,当用户首次访问应用程序时,会被要求开放大量权限,比如相册、定位、联系人,实际上该应用可能仅仅需要一个选择图片功能,却被要求开放整个照片库的权限,这确实是不合理的。对于相册,在 iOS14 中引入了 “LimitedPhotos Library” 的概念,用户可以授予应用访问其一部分的照片,对于应用来说,仅能读取到用户选择让应用来读取的照片,让我们看到了 Apple 对于用户隐私的尊重。这仅仅是一部分,在iOS14 中,可以看到诸多类似的保护用户隐私的措施,也需要我们升级适配。
最近在调研 iOS14的适配方案,本文主要分享一下 iOS14 上对于隐私授权的变更和部分适配方案,欢迎补充指正。

233次阅读  |  1月以前  |  阅读全文 »

Metal新特性:大幅度提升iOS端性能

Metal 是一个和 OpenGL ES 类似的面向底层的图形编程接口,通过使用相关的 api 可以直接操作 GPU ,最早在 2014 年的 WWDC 的时候发布。Metal 是 iOS 平台独有的,意味着它不能像 OpenGL ES 那样支持跨平台,但是它能最大的挖掘苹果移动设备的 GPU 能力,进行复杂的运算,像 Unity 等游戏引擎都通过 Metal 对 3D 能力进行了优化, App Store 还有相应的运用 Metal 技术的游戏专题。

闲鱼团队是比较早在客户端侧选择Flutter方案的技术团队,当前的闲鱼工程里也是一个较为复杂的Native-Flutter混合工程。作为一个2C的应用,性能和用户体验一直是闲鱼技术团队在开发中比较关注的点。而Metal这样的直接操作GPU的底层接口无疑会给闲鱼技术团队突破性能瓶颈提供一些新的思路。

下面会详细阐述一下这次大会Metal相关的新特性,以及对于闲鱼技术和整个淘系技术来说,这些新特性带来了哪些技术启发与思考。

179次阅读  |  1月以前  |  阅读全文 »

Core Image:iOS图像处理技术追踪

Core Image是苹果官方提供的图像处理框架,通过丰富的built-in(内置)或自定义Filter(过滤器)高效处理静态图片、动态图片或视频。开发者还可以通过构造Filter链或自定义Core Image Kernel来实现更丰富的效果。
在WWDC20中,苹果官方针对Core Image技术在以下三方面做了优化:Core Image对视频/动图的支持、基于Metal构建Core Image (CI) Kernel以及Core Image的Debug支持。
这三方面会在下文逐一提到,文末笔者也会浅谈Core Image在手淘图片库中的应用可能以及对Core Image技术的展望。

198次阅读  |  1月以前  |  阅读全文 »
301次阅读  |  1月以前  |  阅读全文 »
286次阅读  |  2月以前  |  阅读全文 »

闲鱼如何解决iOS环境搭建与APP打包速度问题

随着Flutter等跨端框架的出现,业务开发同学经常需要在Android/IOS上跨端进行业务开发,问题定位等。新的不熟悉的环境的搭建总会遇到各种各样的问题,导致搭建失败,特别是IOS开发环境,是最复杂的,不仅环境搭建繁琐,而且切分支后的打包速度很慢,所以我们设计实现了两个工具,用于优化闲鱼IOS开发体验。

330次阅读  |  2月以前  |  阅读全文 »

iOS14 隐私适配及部分解决方案

在刚刚结束的线上 WWDC 2020 发布会上苹果向我们展示了新的 iOS14 系统。iOS14 的适配,很重要的一环就集中在用户隐私和安全方面。
在 iOS13 及以前,当用户首次访问应用程序时,会被要求开放大量权限,比如相册、定位、联系人,实际上该应用可能仅仅需要一个选择图片功能,却被要求开放整个照片库的权限,这确实是不合理的。对于相册,在 iOS14 中引入了 “LimitedPhotos Library” 的概念,用户可以授予应用访问其一部分的照片,对于应用来说,仅能读取到用户选择让应用来读取的照片,让我们看到了 Apple 对于用户隐私的尊重。这仅仅是一部分,在iOS14 中,可以看到诸多类似的保护用户隐私的措施,也需要我们升级适配。
最近在调研 iOS14的适配方案,本文主要分享一下 iOS14 上对于隐私授权的变更和部分适配方案,欢迎补充指正。

481次阅读  |  2月以前  |  阅读全文 »
328次阅读  |  2月以前  |  阅读全文 »
313次阅读  |  2月以前  |  阅读全文 »
328次阅读  |  2月以前  |  阅读全文 »
418次阅读  |  3月以前  |  阅读全文 »
404次阅读  |  3月以前  |  阅读全文 »

iOS 隐形水印之 LSB 实现

在音视频的领域里,其涵盖的知识点繁多,学习方向也很多。而本篇就是一篇比较入门的文章它简单地介绍如何在 iOS 上读取图片 RGB 数据,并通过修改最后一位 bit 来记录数字水印的信息下面就介绍《隐形水印之 iOS 实现》

457次阅读  |  3月以前  |  阅读全文 »

声明式 UIKit 在有赞美业的实践

随着 Flutter 的出现,UI 开发形式也越来越趋向相同,Flutter,SwiftUI,RN,Weex 等新兴UI框架无一意外都使用了声明式的 UI 开发模式,和支持了FlexBox的布局系统。

436次阅读  |  3月以前  |  阅读全文 »

iOS 架构谈:剖析 Uber 的 RIB 架构

加入 UBER 是我的 iOS 工程师职业的新篇章,所有这一切都始于称为 RIB 的新架构。该架构背后的主要思想是,应用程序应由业务逻辑而不是视图驱动。展示 RIB 的最佳方法是一棵树:每个 RIB 都是一个节点,并且它可以不包含子节点,也可以包括一个或多个子节点。

404次阅读  |  3月以前  |  阅读全文 »

如何调试支付宝(iOS)

最近在做的一件事情,从代码层面分析下各家小程序(微信、头条、支付宝、百度)的启动性能,探究各家小程序的实现细节和差异。

435次阅读  |  3月以前  |  阅读全文 »

iOS GPUImage源码解读(一)

最近在不断学习、使用的过程中,有了更深刻的理解,特来写一篇源码解读的文章详细介绍下核心代码的具体实现。至于括号里的“一”,主要是觉得GPUImage还有很多值得深入学习和分享的内容,后续的学习和使用过程中有新的心得体会还会继续给大家分享。

483次阅读  |  3月以前  |  阅读全文 »
447次阅读  |  3月以前  |  阅读全文 »

iOS开发之Masonry框架源码解析

Masonry是iOS在控件布局中经常使用的一个轻量级框架,Masonry让NSLayoutConstraint使用起来更为简洁。Masonry简化了NSLayoutConstraint的使用方式,让我们可以以链式的方式为我们的控件指定约束。本篇博客的主题不是教你如何去使用Masonry框架的,而是对Masonry框架的源码进行解析,让你明白Masonry是如何对NSLayoutConstraint进行封装的,以及Masonry框架中的各个部分所扮演的角色是什么样的。在Masonry框架中,仔细的品味干货还是很多的。Masonry框架是Objective-C版本的,如果你的项目是Swift语言的,那么就得使用SnapKit布局框架了。SnapKit其实就是Masonry的Swift版本,两者虽然实现语言不同,但是实现思路大体一致。

448次阅读  |  3月以前  |  阅读全文 »
413次阅读  |  3月以前  |  阅读全文 »
468次阅读  |  3月以前  |  阅读全文 »
465次阅读  |  3月以前  |  阅读全文 »

iOS 验证码输入一种实现思路

如图所示,现在很多App采用了类似下划线、方块等方式的验证码输入,直观美观!对于这种效果的实现方式,大概有以下几种方式:

439次阅读  |  3月以前  |  阅读全文 »
426次阅读  |  3月以前  |  阅读全文 »
436次阅读  |  3月以前  |  阅读全文 »
441次阅读  |  3月以前  |  阅读全文 »
418次阅读  |  3月以前  |  阅读全文 »
368次阅读  |  3月以前  |  阅读全文 »
201次阅读  |  4月以前  |  阅读全文 »
287次阅读  |  4月以前  |  阅读全文 »
462次阅读  |  4月以前  |  阅读全文 »
266次阅读  |  5月以前  |  阅读全文 »
469次阅读  |  5月以前  |  阅读全文 »
437次阅读  |  5月以前  |  阅读全文 »
685次阅读  |  5月以前  |  阅读全文 »
447次阅读  |  5月以前  |  阅读全文 »

iOS开发最佳实践

Getting on board with iOS can be intimidating. Neither Swift nor Objective-C are widely used elsewhere, the platform has its own names for almost everything, and it's a bumpy road for your code to actually make it onto a physical device. This living document is here to help you, whether you're taking your first steps in Cocoaland or you're curious about doing things "the right way". Everything below is just suggestions, so if you have a good reason to do something differently, by all means go for it!

674次阅读  |  5月以前  |  阅读全文 »
364次阅读  |  6月以前  |  阅读全文 »

将iPhone设置为“水墨屏”的方法!

如果你习惯在夜晚刷手机,看微信公众号文章或阅读小说,但感觉 iPhone 屏幕过于亮眼,即使调整到最低亮度也不行,还可以利用“色彩滤镜”功能让 iPhone 变成“Kindle 水墨屏”。

363次阅读  |  6月以前  |  阅读全文 »

一个不规范的 Category 写法导致的“血案”

项目前后两个版本,线上监控显示整体启动时间缩短了近 300ms,而且包体积也变小了 5M(提交到 App Store 的ipa包)。但是新版本没有大的需求插入,只是 bugfix 版本,启动阶段的代码也没有相关改动。为何会引起包体积和启动时间的变化呢?

296次阅读  |  6月以前  |  阅读全文 »

源码浅析 SDWebImage 5.5.2

本文基于 SDWebImage 5.5.2。重读的原因也是由于发现它的 API 在不断迭代,许多结构已经不同与早期版本,同时也是为了做一个记录。阅读顺序也会依据 API 执行顺序进行,不会太拘泥于细节,更多是了解整个框架是如何运行的。

375次阅读  |  6月以前  |  阅读全文 »
619次阅读  |  6月以前  |  阅读全文 »
563次阅读  |  6月以前  |  阅读全文 »
630次阅读  |  6月以前  |  阅读全文 »
570次阅读  |  6月以前  |  阅读全文 »
513次阅读  |  6月以前  |  阅读全文 »
479次阅读  |  7月以前  |  阅读全文 »

最多阅读

快速配置 Sign In with Apple 1年以前  |  3057次阅读
给数组NSMutableArray排序 1年以前  |  2280次阅读
开篇 关于iOS越狱开发 1年以前  |  2265次阅读
在越狱的iPhone设置上使用lldb调试 1年以前  |  2179次阅读
APP适配iOS11 1年以前  |  2174次阅读
UITableViewCell高亮效果实现 1年以前  |  2116次阅读
App Store 审核指南[2017年最新版本] 1年以前  |  2002次阅读