15 天前 / 秦小风啊
iOS 16 开发者测试版已经可以供开发者下载了,如果有非主力机器可以用的话,不妨更新一下尝尝鲜。可以说,iOS 16 最大也是最受欢迎的更新之一就是锁屏界面了,这个功能让我们可以自定义锁定屏幕,让我们的锁屏更加个性人。从小部件、字体、照片、新壁纸等,我们一一来体验一下如何在 iPhone 上创建自定义的 iOS 16 锁屏。 iOS 16 锁屏:如何自定义 iPhone 自定义锁屏界面并不复杂,只需要简单几步: 1、安装 iOS 16 后,长按锁屏界面 2、如果使用旧壁纸,需要创建一个新壁纸来自定义锁屏 如果点击旧墙纸上的“自定义”按钮...
43 天前 / 携程技术
作者简介 Derek Yang,携程资深研发经理,专注于 iOS 开发 & 跨端技术研究,热衷于新技术探索。 一、前言 2020 年 9 月苹果发布了 iOS 14.0,相较之前有了很大的功能改观,很重要的一点是用户可以更加个性化的定义自己的桌面,Widget 就是这项功能的主角。 近期接到一项产品需求,需要实现若干机票业务相关的 Widget,此文总结该需求开发上线过程中的踩坑填坑经验。 Widget 俗称小组件,是苹果推出的众多 App Extension 中的一款。因此在介绍 Widget 之前,需要先了解 App Extension 及其工作原理。
106 天前 / yaya
动手点关注干货不迷路 背景 Apple 在今年推出了支持 ProMotion 屏幕的 iPhone 设备,让 App 在 iPhone 13 Pro 和 iPhone 13 Pro Max 上的最大刷新帧率可到达 120Hz,极大优化了应用滑动 / 动画的流畅度体验。 ProMotion 并不是一个新的概念,早在 2017 年,Apple 推出的第二代 iPad Pro 便搭载了这一刷新率最高可达 120Hz 的屏幕。在 iPad 上,高刷新率默认对所有 App 启用。而也许是出于能耗的考虑,在 iPhone 上,Apple 并未将这个能力自动对所有 App 启用,而是需要开发者手动添加配置项来进行适配。
117 天前 / 楼外青山
本文字数:8546 字 预计阅读时间:22 分钟 iOS 直播流程概述 写在前面本文目的在于带大家了解一场直播背后,需要经历哪些阶段,以及每个阶段都做了哪些工作,才能够把主播的声音画面送到观众的面前。我们把直播的流程划分为以下六个阶段: 采集处理编码封装网络传输播放下面来一一介绍。 采集采集又分为视频采集、音频采集。 一般来说,我们会借助系统 api 来实现这一部分的工作。以 iOS 为例,需要用到 AVFoundation 框架来获取手机摄像头拍到的视频数据,或者使用 ReplayKit 录制屏幕,以及麦克风收集到的音频数据。
133 天前 / 虞大胆
动手点关注干货不迷路 本文讲述的技术点属于比较极致和新颖的包大小优化技术,文章会从二进制、汇编指令的层面来分析 oc 代码对包大小的影响。接下来会从以下三个方面进行讲述: 二进制层面分析 oc 代码对包大小的影响编码上优化包大小的 tips 总结各种 tips 的收益从二进制文件层面来分析编码对包大小影响以分析属性为例子,介绍一种“从二进制文件层面来分析编码对包大小影响”的分析方法。 文章底部有抖音直播内推群二维码。 实验背景:用真机 iphone11,iOS13.5.1,release,build setting 默认设置,linkmap file 使用 arm64 进行实验。
150 天前 / u561252
动手点关注干货不迷路 2016 年 9 月 26 日,抖音 1.0.0 版本上线,截至目前,抖音日活跃用户突破 6 亿,短短 6 年间,抖音实现了从零开始的爆发性增长。在业务快速发展、数据海量增长、视频 / 直播形式对画质提出更高要求的背景下,抖音基础技术团队如何以技术革新应对时代变局、以匠人之心优化用户体验?在不被外界“看好”的 iOS 开发领域,抖音团队又交出了一份怎样的答卷? 1 月 22 日下午,第三期字节跳动技术沙龙以线上直播的方式与广大观众见面。
182 天前 / 趣编程
前言 @synchronized 是我们 iOS 开发中常见的锁,其本质是递归锁,其作用是创建一个互斥锁,保证此时没有其他线程对传入的对象进行修改,保证代码的安全性。开发中不需要程序员手动加解锁,不会产生死锁问题。对于 @synchronized 的使用,我们在创建单例和防止多线程同时执行同一段代码时候使用,相比于使用 NSLock 创建锁对象、加锁、解锁来说,@synchronized 的使用更方便,并且其可读性更高。 使用 @synchronized 也是很方便的,首先在 @synchronized()中小括号内需要一个参数,这个参数表示信号量,我们针对不同的逻辑可以定义不同的信号量...
217 天前 / 虞大胆
1. 前言 内存(Memory)是计算机中重要的组件之一,用于暂存 CPU 中的运算数据、与硬盘等外部存储交换数据。所有的程序都会在内存中运行,而内存的性能直接影响程序的运行效率。应用中最常见的内存问题有:内存泄漏(Memory Leak)、内存溢出(Out Of Memory)和野指针(Wild Pointer)等。本文重点介绍循环引用检测实战。 2. 基础 内存的生命周期大致可以概括为:分配内存 -> 使用内存 -> 释放内存。而内存泄露 (Memory Leak)是程序中动态分配的堆内存由于某种原因未释放或者无法释放。这会造成内存资源的浪费、程序运行变慢甚至系统崩溃等严重后果。
218 天前 / 前哨君
首发于开源前哨写文章登录 1.2 万 Star!一个 iOS 应用调试利器开源前哨【导语】:用于 iOS 开发的应用内调试工具,可以查看和修改正在运行的应用程序中的几乎所有状态。 简介 FLEX (Flipboard Explorer) 是一套用于 iOS 开发的应用内调试工具。使用时,FLEX 会显示一个位于应用程序上方窗口中的工具栏。在工具栏上可以查看和修改正在运行的应用程序中的几乎所有状态。比如:调整布局、浏览文件、查看网络请求历史、本地数据库等。
219 天前 / 楼外青山
本文字数:5154 字 预计阅读时间:15 分钟 KVO 原理分析介绍 KVO 全称 KeyValueObserving,是苹果提供的一套事件通知机制。允许对象监听另一个对象特定属性的改变,并在改变时接收到事件。由于 KVO 的实现机制,所以对属性才会发生作用,一般继承自 NSObject 的对象都默认支持 KVO。 KVO 和 NSNotificationCenter 都是 iOS 中观察者模式的一种实现。区别在于,相对于被观察者和观察者之间的关系,KVO 是一对一的,而不一对多的。KVO 对被监听对象无侵入性,不需要手动修改其内部代码即可实现监听。
223 天前 / 虞大胆
作者:米广,有赞 iOS 开发,喜欢折腾,微信订阅号:剁手指北, bilibili 频道:yz06276 审核: 五子棋,老司机技术周报编辑,主要致力于研究一站式机器学习平台 — MNN 工作台,大家可以前往 www.mnn.zone 下载 Damonwong,iOS 开发,老司机技术周报编辑,就职于淘系技术部 前言符号化能帮助我们在定位 bug 、崩溃和性能瓶颈时,从运行时日志与堆栈找到根本的代码原因;相信大家了解 atos 或 dSYM 等常用符号化工具,但这些工具是如何运作的?本篇文章将围绕符号化的定义、原理、实践与技巧...
235 天前 / 楼外青山
本文字数:2987 字 预计阅读时间:8 分钟 Block 题记:用最通俗的语言,描述最难懂的技术 最近在学习和迁移 Swift 方面的代码,正好看到了闭包这部分,看完之后整个人都被着魔了一样,于是便有了这两篇文章,如果有那些论述模糊或者不准确,请联系 [email protected] 目录表 Block 是什么 Block 有什么用 语法 使用场景 原理 Block 的数据结构及编译过程关于 Block 的 Copy 关于 Block 捕获的变量注意事项 参考文档 结束语 Block 是什么 Block 是 Objective-C 编程语言下的一个闭包实现,那么什么是闭包?闭包有两个特性...
236 天前 / 开心测试
本文节选自霍格沃兹测试学院内部教材 本章节主要讲解 iOS 自动化真机配置以及在 iOS 真机执行自动化时常见问题与解决方法。 真机使用的 Capability 与模拟器不同,真机测试需要如下的 Capability 方式一:设置 App 路径,启动 App(自动安装 App) { "app": "/Users/seveniruby/Library/Developer/Xcode/DerivedData/UICatalog-ftyzdbgapjmxxobezrnrxsshpdqh/Build/Products/Debug-iphoneos/UICatalog.app", "automationName": "XCUITest", "platformName": "ios", "xcodeOrgId": "xxxxxx", "xcodeSigningId": "iPhone Developer", "udid": "9df224...
239 天前 / 楼外青山
稳定性测试是长时间持续运行 APP,以验证应用是否稳定的测试。它可以有效发现 APP 长时间运行下的偶发闪退、内存泄露、性能变差等问题。iOS 端通常由苹果系统的 API 快速执行点击事件,开展稳定性测试,类似的优秀工具如 FastMonkey 等虽然有诸多好处,但是作为长期运行的测试服务系统,还需要调整功能以适应企业级测试场景,无法解决通过外部请求定制事件执行序列、无法动态设置启动参数、截图存在本地将导致磁盘占用过大等问题。
243 天前 / AggrxTech
1. What:什么是模块化首先来看一下百度百科对模块化的定义:模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。现代软件开发往往以模块作为基本的合成单位,模块间通过接口进行功能调用,这种方式使得每个模块聚焦于自身的业务,无论是对于代码复用或者是程序的稳定性都有着积极的作用。可以这么说:没有模块化编程作为软件开发的基础,就没有如今的信息时代。