![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
其它
文章平均质量分 69
Philm_iOS
这个作者很懒,什么都没留下…
展开
-
iOS 启动图和 appIcon 整理
启动图片整理设备竖屏横屏命名iPhone XS Max1242px × 2688px2688px × 1242pxDefault-1242h@3x.pngiPhone XSiPhone X1125px × 2436px436px × 1125pxDefault-812h@3x.pngiPhone XR828px × 1792px1792px ×...原创 2018-10-25 15:07:14 · 753 阅读 · 0 评论 -
MMKV–基于 mmap 的 iOS 高性能通用 key-value 组件
MMKV–基于 mmap 的 iOS 高性能通用 key-value 组件MMKV 是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。MMKV 源起在 iOS 微信的日常运营中,时不时就会爆发特殊文字引起 iOS 系统的 crash,《iOS微信特殊字符保护方案》,文章里面设计的技术方案是在关键代...转载 2018-08-27 10:47:52 · 1338 阅读 · 0 评论 -
CIKernel 介绍
在此之前,我们先了解下它的一些背景知识。CIKernel 需要使用 Core Image Kernel Language (CIKL) 来编写,CIKL 是 OpenGL Shading Language (GLSL) 的子集,如果你之前有过 OpenGL 着色器编写的经验,这部分你会感觉格外亲切。CIKL 集成了 GLSL 绝大部分的参数类型和内置函数,另外它还添加了一些适应 Core Im...原创 2018-08-17 10:41:46 · 1944 阅读 · 1 评论 -
深拷贝和浅拷贝
对象拷贝有两种方式:浅拷贝和深拷贝。顾名思义,浅拷贝,并不拷贝对象本身,仅仅是拷贝指向对象的指针;深拷贝是直接拷贝整个对象内存到另一块内存中。定义浅拷贝 copy指针拷贝 - 将指针中的地址值拷贝一份.只复制指向对象的指针,而不复制引用对象本身。copy返回的为imutable对象.如果对copy返回值使用mutable对象接口就会crash深拷贝 mutabl...转载 2018-08-22 11:03:27 · 176 阅读 · 0 评论 -
浅析移动蜂窝网络的特点及其省电方案
浅析移动蜂窝网络的特点及其省电方案蜂窝网络的架构类似于我们常见的蜂窝,是由一个个基站组成的蜂窝,理想状态中我们的蜂窝网络应该是下面这个样子的。当然,现实生活中网络资源分布并没有这么的均匀。 Wi-Fi 是一种无限局域网技术,Wi-Fi 信号需要有线网来提供,比如我们家里常用的宽带上网,就是将有线信号转换成 Wi-Fi 信号。 计费的差异性我们平时使用的蜂窝网络一般都是按照流量来...转载 2018-08-22 11:02:03 · 931 阅读 · 0 评论 -
pods的原理
CocoaPods是IOS项目的依赖管理工具,CocoaPods负责管理对第三方库的依赖,即如果A依赖于B,B依赖C,我们在A工程里指出A依赖于B,CocoaPods会自动为我们下载C,并在构建时链接C库。IOS工程有3种库项目,framework,static library,meta library,我们通常只使用前两种。我们在使用static library库工程时,一般使用它编译出来的...转载 2018-08-22 11:00:44 · 4555 阅读 · 0 评论 -
metal简介
原文Metal 框架支持 GPU 加速高级 3D 图像渲染,以及数据并行计算工作。Metal 提供了先进合理的 API,它不仅为图形的组织、处理和呈现,也为计算命令以及为这些命令相关的数据和资源的管理,提供了细粒度和底层的控制。Metal 的主要目的是最小化 GPU 工作时 CPU 所要的消耗。Metal Programming GuideMetal 是针对 iPhone 和 iP...转载 2018-08-22 10:55:16 · 1268 阅读 · 0 评论 -
YUV颜色编码解析
YUV颜色编码解析YUVYUV是一种颜色空间,基于YUV的颜色编码是流媒体的常用编码方式。Y表示流明,U、V表示色度、浓度,这种表达方式起初是为了彩色电视与黑白电视之间的信号兼容。 对于图像每一点,Y确定其亮度,UV确认其彩度。Y’CbCr也称为YUV,是YUV的压缩版本,不同之处在于Y’CbCr用于数字图像领域,YUV用于模拟信号领域,MPEG、DVD、摄像机中常说的YUV其...原创 2018-08-16 10:35:39 · 1038 阅读 · 0 评论 -
CoreML与CoreMLTools体验
CoreML与CoreMLTools体验首先,坦率地讲,本届 WWDC 大会上篇幅相对较长的主题演讲以及其中传递出的大量新鲜资讯令我瞬间被淹没在兴奋与激动当中。我对于新的 API 与新型功能感到非常好奇。而在下载 Xcode 9 与 iOS 11 之后,我又开始着手探索新的框架方案——即 CoreML.framework。事实证明,这套方案相当出色,我们能够利用它实现大量设想,它同时亦带来...转载 2018-07-31 10:27:01 · 1420 阅读 · 0 评论 -
ios数据保护
iOS文件系统中的文件、keychain中的项,都是加密存储的。当用户解锁设备后,系统通过UDID密钥和用户设定的密码生成一个用于解密的密码密钥,存放在内存中,直到设备再次被锁,开发者可以通过Data Protection API 来设定文件系统中的文件、keychain中的项应该何时被解密。这个就是数据保护的内容。钥匙串(keychain)keychain服务提供了一种安全的保存私密...转载 2018-08-20 10:50:40 · 1081 阅读 · 0 评论 -
深入理解Tagged Pointer
深入理解Tagged Pointer原文地址:http://www.infoq.com/cn/articles/deep-understanding-of-tagged-pointer/前言在2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对...转载 2018-08-23 10:37:15 · 288 阅读 · 0 评论 -
AWK 简单使用
作者:AK引用(张星宇发布的 “2018 年将至,iOS 工程师如何自我提高” 脚本语言非常重要,绝对是提升工作效率的神器,我强烈建议每个客户端工程师都应该了解一些 Shell 脚本并且掌握 Python,Ruby 和 JS 中至少一门语言。理论上来说没有什么是脚本语言做得到,Java 做不到的,但脚本语言最大的特点就是快,快到极点的那种快。对于一些极度简单的小需求,比如统计一个文件中某...原创 2018-09-25 15:45:20 · 392 阅读 · 0 评论 -
iOS AVAudioEngine使用教程
翻译: AK 声明:转发本文,请联系作者授权 原文地址在这个AVAudioEngine教程中,您将学习如何使用Apple的更高级音频工具包添加高级音频功能.向大多数iOS开发人员提及音频处理,它们会给你带来恐惧和恐惧。这是因为,在iOS 8之前,要深入了解非常低层的Core Audio frameworw - 只有少数勇敢才才能做到这一点。值得庆幸的是,随着iO...翻译 2018-09-03 16:15:43 · 6374 阅读 · 0 评论 -
解决新版本 Chrome 安装第三方插件失败
环境系统版本: macOS 10.13.5 (17F77)型号名称: MacBook ProChrome版本: 68.0.3440.106(正式版本) (64 位)测试插件: SwitchyOmega2.3.9_0解决办法一不安装了!%&*@(!2646kdir@#%^&!解决办法二1,电动窗->扩展程序 打开开发者模式 2,...原创 2018-09-11 16:52:46 · 12431 阅读 · 0 评论 -
iOS应用瘦身方法思路整理
iOS应用瘦身方法思路整理一、前言前段时间注意到我们APP的包大小超过100MB了,所以随口跟吕老板说了下能否采用字体文件(.ttf)替代PNG图片,吕老板对应用瘦身很感兴趣因此让我做下技术调研。这篇文章主要是将我们的各个技术方案的思路做一下整理和总结,希望对大家有所帮助。二、iOS内置资源的集中方式在介绍技术方案前我们先来看下iOS内置图片资源都有哪些常见的方式:...转载 2018-08-21 10:42:35 · 529 阅读 · 0 评论 -
ios通用链接
什么是通用链接通用链接是iOS9出的一个特性,他能让用户通过链接直接打开你的APP。经常配合分享功能,让用户快速进入到我们的APP里面。APP的两大引流功能 –> 分享+推送。分享功能应当要能将对APP感兴趣的用户引入到APP,当前微信的浏览器将URL Schemes屏蔽掉了,一般做法是是只能借助系统浏览器中转。使用通用链接可以跳过微信对URL Schemes的屏蔽。使用...转载 2018-08-21 10:42:05 · 521 阅读 · 0 评论 -
iOS11中网络层的一些变化
iOS11中网络层的一些变化(Session707&709脱水版)本文将介绍 iOS11 下网络层(NSURLSession)的一些变化。这篇文章分4部分来总结了Session 707和709:iOS11中网络层新出的功能iOS11中网络层优化的功能iOS11中网络层的最佳实践苹果对网络层未来的规划因为这一次很多内容其实是苹果用新的技术来给网络层做的优化,所以新功...转载 2018-08-21 10:38:48 · 1247 阅读 · 0 评论 -
微信iOS SQLite源码优化实践
# 微信iOS SQLite源码优化实践Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。本期,我们邀请了腾讯WXG iOS 开发工程师——张三华,为大家分享《微信iOS SQLite源码优化实践》。### 分享内容简介:SQLite是微信iOS选用的数据库,随着微信iOS客户端业务的增长...转载 2018-08-23 10:41:07 · 667 阅读 · 0 评论 -
iOS应用UI线程卡顿监控
iOS设备虽然在硬件和软件层面一直在优化,但还是有不少坑会导致UI线程的卡顿。如果能一套机制能自动预报“卡顿”并检测出导致该“卡顿”的代码位置就能够更方便调试和优化.解决方案分析简单来说,主线程为了达到接近60fps的绘制效率,不能在UI线程有单个超过(1/60s≈16ms)的计算任务。通过Instrument设置16ms的采样率可以检测出大部分这种费时的任务,但有以下缺点:In...转载 2018-08-23 10:40:07 · 486 阅读 · 0 评论 -
提升 iOS 开发效率! Xcode 9 内置模拟器的9个技巧
提升 iOS 开发效率! Xcode 9 内置模拟器的9个技巧iOS模拟器是在开发任意iOS应用程序过程中不可或缺、无法被忽视的一个部分。值得一提的是,Xcode 9的新模拟器带来了很多有用的功能,能够提升你的开发效率。对比历代模拟器的更新,这次有了很重大的改变。所以让我们开始这篇教程的重点吧,本文会列出我在新iOS模拟器中发现的新功能(一些技巧也可以在旧的模拟器中使用)。1....转载 2018-08-23 10:38:42 · 666 阅读 · 0 评论 -
私有API获取当前设备下载的app及下载进度
私有API获取当前设备下载的app及下载进度涉及到的两个.h LSApplicationWorkspace 扫描系统中所有app的状态 LSApplicationProxy 应用下载进度 #import <dlfcn.h>#import "LSApplicationProxy.h"#import "LSApplicationWor转载 2018-07-30 10:42:23 · 3181 阅读 · 1 评论 -
深入理解哈希表
深入理解哈希表原文地址 http://www.jianshu.com/p/138ccbc75803 有两个字典,分别存有 100 条数据和 10000 条数据,如果用一个不存在的 key 去查找数据,在哪个字典中速度更快?有些计算机常识的读者都会立刻回答: “一样快,底层都用了哈希表,查找的时间复杂度为 O(1)”。然而实际情况真的是这样么?答案是否定的,存在少部分情况两...转载 2018-07-30 10:43:51 · 1011 阅读 · 1 评论 -
深入浅出理解视频编码H264结构
深入浅出理解视频编码H264结构引言在国内直播”欣欣向荣”(ps: 其实大多都亏钱,为的就是炒概念)的年代,相信很多小伙伴也投入了技术的浩瀚大洋当中(ps: 其实就是搬砖),日复一日,音/视频的神秘面纱开始让更多的小伙伴扯下,而本博主,也只是刚窥探门道,慢慢摸索。好了,废话不扯,我们今天就来说说我们经常在视频编码当中用到的 H.264编码格式 的结构,相信 H.264 这个东西很多小伙...转载 2018-07-27 11:19:51 · 302 阅读 · 0 评论 -
使用 SDWebImage pod install 因为 libwebp 初始化不成功问题处理
作者: AK 声明:转发本文,请联系作者授权出现错误如图 通过以下步骤可能解决这个错误 - 1,pod repo 查看 cocoapods 在本机的PATH。 - 2,cd /Users/(你的用户名)/.cocoapods/repos/master 这个就是查看到的path - 3,find . -name “* libwebp *” - 4,nano ./...原创 2018-08-14 11:13:27 · 1153 阅读 · 1 评论 -
轻量级低风险 iOS 热更新方案
轻量级低风险 iOS 热更新方案我们都知道苹果对 Hotfix 抓得比较严,强大好用的 JSPatch 也成为了过去式。但即使测试地再细致,也难保线上 App 不出问题,小问题还能忍忍,大问题就得重新走发布流程,然后等待审核通过,等待用户升级,周期长且麻烦。如果有一种方式相对比较安全,不需要 JSPatch 那么完善,但也足够应付一般场景,使用起来还比较轻量就好了,这也是本文要探讨的主题。...转载 2018-08-14 10:44:44 · 1789 阅读 · 1 评论 -
podfile语法
前言iOS开发会经常用到cocoapods管理第三方,简单、方便、高效。如何集成cocoapods在cocoapods官网和Podfile语法说明会有详细介绍,本想介绍的是关于集成cocoapods时会用到的一个文件Podfile文件。什么是PodfilePodfile是一个规范,描述了一个或多个一套工程目标的依赖项一个简单写法:target 'MyApp' dopo...转载 2018-08-14 10:44:13 · 3508 阅读 · 0 评论 -
使用appledoc自动生成api文档
AppleDoc可以根据项目中的注释自动生成类似于Apple官方文档的文档文件.安装 appledocgit clone git://github.com/tomaz/appledoc.gitcd ./appledocsudo sh install-appledoc.sh如果出现 * INSTALL SUCCEEDED * 则说明我们安装成功了。使用方法进入工程...原创 2018-08-14 10:43:44 · 660 阅读 · 0 评论 -
使用CCatch优化编译时间
安装 CCache如果已经安装过homebrew(Mac OSX上的软件包管理工具),可以通过以下命令直接安装:brew install ccache如果没有安装homebrew,需要先安装homebrewruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/insta...原创 2018-08-14 10:43:12 · 366 阅读 · 0 评论 -
数据安全
近年来,数据安全形势越发严峻,各种数据安全事件层出不穷。在当前形势下,互联网公司也基本达成了一个共识:虽然无法完全阻止攻击,但底线是敏感数据不能泄漏。也即是说,服务器可以被挂马,但敏感数据不能被拖走。服务器对于互联网公司来说,是可以接受的损失,但敏感数据泄漏,则会对公司产生重大声誉、经济影响。在互联网公司的数据安全领域,无论是传统理论提出的数据安全生命周期,还是安全厂商提供的解决方案,都面临着...转载 2018-08-09 10:36:30 · 4916 阅读 · 0 评论 -
iOS重签名防护和sysctl调试
一 重签名防护 想自己的app不被重签名,可以在代码中检测签名信息,然后采取措施 查看证明组织单位进入.app的包内容,查看embedded.mobileprovision信息security cms -D -i embedded.mobileprovision 找到application-identifier的value的第一部分就是利用签名信息进行重签名防护void ch...转载 2018-08-09 10:34:14 · 931 阅读 · 0 评论 -
ios一窥并发底层
逻辑控制流在我们系统中通常是会有其它程序在运行,进程是可以告诉每一个程序它是独自在使用处理器。这个时候如果有调试器单步去执行程序,就会出现一系列的程序计数器( PC ) 值,这些值唯一的对应于包含在程序的可执行目标文件的指令。这个所谓的 PC 值叫做 逻辑控制流一句话简单的介绍什么是并发:如果逻辑控制流在时间上重叠就是并发 (concurrent) e.g:往宏观上讲:在...转载 2018-08-09 10:32:55 · 166 阅读 · 0 评论 -
终端图像处理实践:AR全景动态贴纸方案简介
作者简介:billzbwang(王志斌),天天P图 iOS 工程师全景动态贴纸主要包含三部分技术要点:三维粒子系统计算运动轨迹利用陀螺仪获取手机姿态构建三维空间,根据手机姿态渲染粒子1. 粒子系统主要由粒子发射器,粒子元素,粒子纹理构成 根据粒子文件的配置,粒子发射器按一定发射速度随机发射粒子 粒子发射的坐标、初速度、加速度具备随机性 后续每帧轨迹运算都会根据粒子...转载 2018-08-09 10:31:43 · 2974 阅读 · 0 评论 -
Xcodegen介绍 | 一款可以帮助你更好的构建Xcode Project的工具
翻译: AK 声明:转发本文,请联系作者授权 !(原文地址)[https://www.number42.de/blog/2018/07/24/xcodegenarticle.html]In the series “Better iOS projects”, we have a look at the various tools and environments tha...翻译 2018-08-06 17:58:33 · 3156 阅读 · 0 评论 -
从零开始的机器学习 - Machine Learning(一)
前言这篇文章的主角是线性回归,也就是LR(Linear Regression)。不过高中生肯定不知道回归是什么吧?我现在前言里面简单介绍一下。回归(Regression)回归(Regression)问题是机器学习里面很大的一块。统计学中,回归分析(regression analysis)指的是确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。回归分析按照涉及的变量的...转载 2018-08-15 10:36:21 · 2294 阅读 · 1 评论 -
iOS 神经网络
深度学习框架之视频处理应用写在前面阅读原文 未完待续关于视频分析或者图像处理过程如下: 1.首先要提取视频中的运动物体,常用算法有:帧差法,GMM,vibe等; 2.提取前景(运动物体)后对其进行跟踪,主要算法有:camshift,粒子滤波,TLD,压缩感知等; 3.对监控视频的去模糊,去雾,夜视增强等,可基于opencv来实现。 4.最后通过机器学习对视频进行分析。...转载 2018-07-26 10:43:37 · 405 阅读 · 0 评论 -
iOS10 系统跳转到系统设置
iOS10 系统跳转到系统设置1、在 info.plist中添加 Prefs: urlsechem2、iOS10 苹果将系统的设置页的urlsechem路径改变了 比如需要将就版本的urlschemes中的 prefs: 替换成 APP-Prefs: 例如:10以前的路径prefs:root=LOCATION_SERVICES 换成10以后的路径就变成了APP-Prefs:root=...转载 2018-07-26 10:39:56 · 406 阅读 · 0 评论 -
iOS App 签名的原理
iOS App 签名的原理iOS 签名机制挺复杂,各种证书,Provisioning Profile,entitlements,CertificateSigningRequest,p12,AppID,概念一堆,也很容易出错,本文尝试从原理出发,一步步推出为什么会有这么多概念,希望能有助于理解 iOS App 签名的原理和流程。目的先来看看苹果的签名机制是为了做什么。在 iOS ...转载 2018-07-26 10:35:34 · 318 阅读 · 1 评论 -
iOS越狱检查
检查设备是否越狱的几种方法:沙盒完整性检查通过fork()函数检测,如果沙盒被越狱工具破坏或者是程序在沙盒外运行,那么fork()函数将会执行成功。如果沙盒仍处于激活状态,你的程序就会执行失败,这就说明沙盒没有被篡改。int result = fork();if(!result)exit(0);if (result>=0) {//沙盒被破坏,处于越狱环境...原创 2018-07-25 11:59:18 · 1484 阅读 · 0 评论 -
非越狱iOS设备的远程控制实现原理
WebDriverAgent是Facebook基于XCUITest推出的iOS的移动测试框架,支持目前市面上所有iOS9以上的设备。该框架通过在设备端启动一个HTTP Server提供一系列API接受操作指令来代替固定的操作代码,除了启动应用、点击和滑动页面元素,WebDriverAgent还提供截图、页面元素查询等功能,iOS的appium测试框架就是基WebDriverAgent实现的。...转载 2018-08-01 10:33:03 · 3201 阅读 · 2 评论 -
iOS响应式架构
iOS响应式架构自2014年起,移动端的架构中开始渐渐的融入了响应式的元素。时至今日,融入响应式的架构已经在很多产品的多次迭代中经受住了考验。十年后,再回首现在这一时间点,很可能会被认为是一个新的移动端架构时代的开端。很多文章中都提出了针对自己产品研究出来的一套架构,却鲜有文章单独对架构中的响应式元素进行讨论。笔者就写下了这样一篇关于iOS响应式架构的文章来阐述响应式架构的历史、响应式架构...转载 2018-08-01 10:34:54 · 415 阅读 · 0 评论