你好!iOS
文章平均质量分 88
兵临城下也
专注iOS开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
iOS多语言解决方案全面指南
本文以及相关工具和代码旨在为已上线的iOS项目提供一种快速支持多语言的解决方案。由于文案显示是通过hook实现的,因此对App的性能有一定影响;除了特殊场景的文案显示需要手动支持外,其他任务均已实现自动化。原创 2023-06-26 16:56:15 · 5158 阅读 · 0 评论 -
Swift之struct二进制大小分析
随着Swift的日渐成熟和给开发过程带来的便利性及安全性,京喜App中的原生业务模块和基础模块使用Swift开发占比逐渐增高。本次讨论的是struct对比Class的一些优劣势,重点分析对包体积带来的影响及规避措施。原创 2023-01-22 17:44:06 · 1012 阅读 · 2 评论 -
iOS灵动岛【电商秒杀】开发实践
iOS灵动岛【商品秒杀】开发实践原创 2022-10-11 21:18:47 · 3380 阅读 · 2 评论 -
iPhone尺寸大全(包含iPhone16系列)
iPhone尺寸大全(包含iPhone16系列)原创 2022-10-08 15:28:09 · 37227 阅读 · 0 评论 -
iOS番外-搞点音乐玩玩
这是一个可以让iOS小白用户,直接根据钢琴或者其他乐器的简谱,直接开发一个可以播放的简单教程,底层使用CoreMIDI.framework来实现,中层使用开源的MIKMIDI库来实现,上层将简谱设计成合理的数据结构,将简谱数据进行对象化管理,业务方简单调用进而直接上手使用。作者:HarryDeng链接:https://juejin.cn/post/7075638987712364580来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。原创 2022-03-16 22:21:24 · 5427 阅读 · 1 评论 -
iOS代码覆盖率(二)-增量覆盖率自动化实践
全量代码覆盖率可以直观的看到整个App的代码的覆盖率情况,但是往往有用的或者被关注的是增量代码覆盖率数据。经过不断的学习和探索,发现在基于git diff能力,通过一系列的处理获取我们想要的增量的信息,结合覆盖率信息,得到一份增量的覆盖率信息。一、获取代码diff这里依旧以本工程demo为例进行说明1、找到两次提交确认增量代码通过 git log 找到最近一次(多次)的改动日志:$ git logcommit a8692db2716eeb909aa9a9e48a89ac1a5368fa1.原创 2022-01-06 14:43:34 · 3622 阅读 · 0 评论 -
iOS代码覆盖率(一)-全量覆盖率自动化实践
简介这是一个统计基于 Swift & Objective-C 工程的代码覆盖率的自动化脚本。之所以做成 Pod ,是便于更好的复用,该 Pod 只包含了收集生成代码覆盖率的脚本。整体比较简单方便。这里只将流程,咱不讲原理。后续另外介绍这里只将流程,咱不讲原理。后续另外介绍使用1、安装:通过 CocoaPods 进行安装,在你的 Podfile 文件添加如下代码:pod 'HDCoverage'然后 pod install 安装下载相关脚本文件。2、关联脚本:在项目的 Xcode原创 2022-01-06 14:42:14 · 2933 阅读 · 0 评论 -
Source-based Code Coverage
原文: Source-based Code Coverage基于源码计算代码覆盖率一、简介这个文档展示如何通过 clang基于源码 条件下计算代码覆盖率特性。因为它是直接操作AST和预处理阶段,所有称为 “基于源码” 的代码覆盖率。并且能够生成非常准确的覆盖数据。clang 提供两种代码覆盖率的实现:SanitizerCoverage : 它在函数、基本块和边缘级别插入对用户定义函数的调用。提供了这些回调的默认实现并实现了简单的覆盖率报告和可视化。低开销、简单的代码覆盖率。gcov:是GC翻译 2021-11-02 11:09:40 · 2523 阅读 · 3 评论 -
iOS站内推送UI效果实现
一、功能列表: 一行代码实现站内推送UI效果 多次点击展示兼容 支持点击推送UI事件 支持显示隐藏动画及自定义展示时长 支持拖动推送UI效果 支持拖动超过1/3自动消失,支持拖动小于1/3自动位置,并且展示时长重新计算二、代码接入HDNotifPopManager.swiftprivate func showNotifPopView() { let obj = HDNotifObj() obj.title = "消息中心" obj.text = "消息中心消息中原创 2021-02-24 12:13:35 · 509 阅读 · 0 评论 -
使用Xcodeproj修改依赖库顺序
基于某种特定的需求,需要动态的按照特定的顺序来对项目依赖的库进行排序,得知 Cocoapods 团队大佬已经开发了 Xcodeproj 来管理工程的配置,所以本次记录一下使用 Xcodeproj 来完成我的目的具体的代码如下:require 'xcodeproj'def priorityDependencesFunction(dependencies) # 自定义依赖排序库(下面的排序优先级最高) priorityDependences = ["SDWebImage", "Coc.原创 2020-10-10 17:11:07 · 1411 阅读 · 0 评论 -
iOS13下 'threading violation: expected the main thread' Crash分析及解决
HDCameraCrashDemo问题描述iOS13及以上的系统,使用Xcode11.2编译器运行,在特定的路径下唤起系统拍照/录像会直接Crash,使用该Demo的Crash的日志如下:2019-12-24 10:28:40.709607+0800 HDCameraCrashDemo[3338:1286515] *** Assertion failure in -[FBSSerialQue...原创 2019-12-24 11:32:23 · 9178 阅读 · 4 评论 -
UITableView如何开启极简模式
UITableView作为iOS开发的最常用的控件,相信对我们开发来说再熟悉不过了,但是越简单的越熟悉的东西,往往也可以看出代码的质量,项目的结构等问题。本文针对 **UITableView中如何适应需求多变(新增删除、经常调换位置、高度变动等等)的通用解决方法** 及 **如何避免同一套完全相同的UITableViewDelegate、UITableViewDataSource代码在不同UIViewControl原创 2017-02-16 16:24:05 · 1921 阅读 · 1 评论 -
iOS之两圆之间标准圆的随机生成
相信很多社交产品中,肯定会存在寻找附近人或者附近商家的需求,类似下图,在大圆和小圆之间(橘色区域)生成一系列的随机圆,并且所有随机圆之间也不能有交集,我暂且称这种圆为标准圆。 关于这样的需要以前在做项目中有同事做过,虽然可以实现了上面的效果图,但是坐标及半径都是写死,从写死的数据随机取值,看上去是满足了,但是对于用户来说多次使用该功能时,肯定有一定的视觉疲倦,且写死的一些数据真的不好写,如原创 2017-01-16 15:06:12 · 2104 阅读 · 5 评论 -
appium2-基于python调用unittest框架对iOS进行自动化测试
appium2-基于python调用unittest框架对iOS进行自动化测试 紧急上篇的 appium1-macOS10.12下如何丝滑的使用appium? 我相信环境问题已经解决完毕,虽然下载demo并且体验了一次完整的自动化流程,但是有太多的疑问在后面等着我们。这里我总结了一下自动化测试代码一些说明,比如关键字及输出结果等等,这是一条漫漫长路,需要耐心细心。先来几篇优秀的文章开开胃:P原创 2017-02-06 12:22:54 · 3165 阅读 · 3 评论 -
iOS10 本地通知
概序:主要实现iOS10中 UserNotifications 对带选择控制的本地通知的使用,只要点击了当日日的通知或者进入了app,当日的本地通知不再相应功能;使用 3D-Touch 在桌面上来快速启动app的功能;使用后台多任务功能;1、本地通知:iOS10 全新的 UserNotifications 框架将iOS系统的远程和本地通知做了统一的管理,下面介绍一下本地通知原创 2016-12-22 18:13:37 · 1513 阅读 · 0 评论 -
直播技术汇总
做一款仿映客的直播App?看我就够了直播时代--IOS直播客户端SDK,美颜直播一、直播一些技术名词1、什么是FFmpeg ,FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,它提供了录制、转换以及流化音视频的完整解决方案。直播系统多使用该方案。2、什么是RTMP(Real Time Messaging Protocol:实时消息传输协议)原创 2016-10-20 13:52:31 · 8795 阅读 · 2 评论 -
shell中的curl网络请求
curl 是利用URL语法在命令行下工作的文件传输工具,1997年首次发行,支持文件上传和下载,结合shell脚本体验更棒。但按照传统习惯称 curl 为下载工具。 curl 支持的通信协议有 有FTP、FTPS、HTTP、HTTPS、TFTP、SFTP 等等,支持的平台有 Linux、MacOSX、Darwin、Windows、DOS、FreeBSD等等。一、curl的作用:1、查看原创 2017-07-03 17:59:08 · 11511 阅读 · 0 评论 -
ACK分享
ACK分享 相关资料:ack官网 the5fire的技术博客 linux下的高效代码搜索工具-ackLinux下比grep更快速的检索工具ack-grep安装如何在Linux上提高文本的搜索效率1、简单介绍:i. 它是高效代码搜索工具;ii.它和 grep(强大的文本搜索工具) 很像, 但是对于开发者来说做了进一步的优化, 目的就是要取代 grep ;iii.它纯粹的写在 Perl 5(脚本语言...原创 2016-09-25 18:52:25 · 1953 阅读 · 1 评论 -
appium1-macOS10.12下如何丝滑的使用appium?
macOS10.12下如何丝滑的使用appium?1、下载或者更新Homebrew:homebrew官网 macOS 不可或缺的套件管理器$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" #下载$ brew update #更新$ brew -原创 2017-01-04 19:48:58 · 3790 阅读 · 8 评论 -
使用CocoaPods的一些仓库说明
使用CocoaPods的一些仓库说明:CocoaPods官网 1、pod使用官网的仓库的关联代码(这些代码需要cocoapods审核通过才能被其他人使用,而且每次稳定的代码版本需要打上tag方便使用者选择对应的tag代码)上传至cocoapods的公开的 仓库 使用 pod setup 或者 pod install 时会从仓库中下载到本地,存放在电脑的 .cocoapods/repo/master原创 2017-03-23 17:47:55 · 1501 阅读 · 0 评论 -
Swift和Objective-C注意事项
一、Swift使用或者继承Objective-C 在Objective-C项目中第一次建立Swift文件时,Xcode会提示你是否要生成桥接文件:ProjectName-Bridging-Header.h , 当然不小心没有选择生成或者删除之后,手动添加也可以:建立 ProjectName-Bridging-Header.h ,在 Targets-->Build Settings-->Swift原创 2017-03-23 17:57:36 · 4684 阅读 · 0 评论 -
SSH相关知识点
SSH(Secure SHell)基于密钥的安全验证:需要依靠密钥,也就是需要为自己创建一对密钥,把公有的密钥放在需要访问的服务器上,客户端向服务器发送请求时,需要使用密钥进行安全验证:服务器收到请求之后,先在该服务器的用户根目录下需要你的公有密钥,然后把它和你发送过来的公有密钥进行对比,如果一致则服务器认为你这次请求有效并且响应你。从而避免被“中间人”攻击。SSH如何生成?1、设置git的use原创 2017-06-19 17:18:59 · 527 阅读 · 0 评论 -
GCD相关知识点
GCD相关知识点多线程技术–GCD 深入学习GCD GCD 深入理解:第一部分 GCD 深入理解:第二部分 1、 GCD(Grand Centra Dispatch)中队列分类:串行与并行在使用GCD的时候,我们会把需要处理的任务放到Block中,然后将任务追加到相应的队列里面,这个队列,叫做Dispatch Queue。然而,存在于两种Dispatch Queue,一种是要等待上一个执行完,再执行原创 2017-06-20 10:18:58 · 539 阅读 · 0 评论 -
Cocoapods制作pod时,依赖百度地图SDK的一些问题
1、制作一个pod时,依赖了百度地图sdk(静态库),这个时候,Cocoapods会在百度地图sdk这个pod中的podspec中为项目配置百度地图sdk需要的系统动态库及静态库。编译新做的pod,得到framework,分析它的二进制,没有多余的代码,但是二进制却有6.9M,使用 otool 分析得到:denglibing$ otool -L /Users/denglibing/Library/D原创 2017-09-18 13:11:47 · 5813 阅读 · 0 评论 -
HDDNetworking网络组件
基于AFNetworking的v3.1.0进行网络请求,基于PINCache的v3.0.1进行网络数据缓存,支持清除指定url缓存、url及参数组合缓存,通过AFNetworkActivityLogger进行网络log打印。该代码使用灵活的请求方式,不包含任何业务代码,上层支持集中式、分布式网络接口管理方式,在请求前可以对请求进行配置,也支持对网络请求后返回的数据进行统一处理。一、目的HDDNet原创 2017-09-11 16:38:40 · 702 阅读 · 1 评论 -
Git上传大文件
最近开发项目中,使用了几个体积超过100M的第三方框架,这样导致在提交代码入库时,会被拒绝,以GitHub为例,单个文件超过50M入库会警告,超过100M会不然入库。解决方案1、将单个文件大于100M的文件不入库GitHub官方解决方案 git rm --cached giant_file# Stage our giant file for removal, ...原创 2018-03-05 09:02:38 · 23243 阅读 · 2 评论 -
iOS 8 by Tutorials(翻译1.2)
1.2、开始自适应布局ios8的巨大变化中,Adaptive Layout的引用给iOS设计师带来帮助。在设计项目时,你可以创建简单的布局来适应当前的iOS8设备,这一章节是Adaptive Layout的入门,你可以学到通用的Storyboards、size classes、布局和订制字体及超有用的助理编辑预览(通过storyboards清晰的看出项目结构)。现在你可以从头开始创建用关于天气翻译 2014-12-18 16:32:55 · 1931 阅读 · 0 评论 -
Rollout学习2 JS和OC代码对照篇
Rollout 是国外开发团队一个基于iOS运行时注入OC格式化的JS代码来修复/更新App的热修复工具,它有一套自己的JS命名空间及OC代码和JS代码转换的协议,而且它的功能强大且使用简单,文档详细且人性化。对版本兼容也做了可视化界面方便使用者操作,所以目前来说超过一定的月激活量后会收费,但是一切是值得的。原创 2016-05-18 15:08:01 · 1388 阅读 · 1 评论 -
kerkee 之Web和iOS开发使用篇
简单认识:kerkee 是一个多主体共存型 Hybrid 框架,具有跨平台、用户体验好、性能高、扩展性好、灵活性强、易维护、规范化、集成云服务、具有Debug环境、彻底解决跨域问题。该框架从开发者角度支持三种团队开发模式:Web开发者 、Native开发者 、Web开发者和Native团队共同合作的开发团队 。下面我将从 Web开发者和Native(iOS)团队共同合作的开发团队 模式来分原创 2016-06-17 19:34:00 · 2895 阅读 · 0 评论 -
iOS日志获取和实时浏览器显示日志
原文连接:https://yohunl.com/iosri-zhi-huo-qu-he-shi-shi-liu-lan-qi-xian-shi-ri-zhi/平时我们写代码的时候,为了调试方便,总是会在代码中写入很多的NSLog(也可能是其它的日志框架等,例如大名鼎鼎的CocoaLumberjack),但是我们对于NSLog到底了解多少?NSLog的信息为什么Xcode能够转载 2016-06-15 15:55:42 · 3746 阅读 · 0 评论 -
iOS_引入代码块的步骤
iOS_引入代码块的步骤原创 2015-06-04 13:51:31 · 1386 阅读 · 0 评论 -
Cordova(PhoneGap)使用(iOS)
使用Cordova来实现html调用iOS设备相册原创 2015-04-10 11:05:41 · 2333 阅读 · 1 评论 -
iOS 8 by Tutorials(翻译1.3)
1.3、Size classes通用的storyboards真的很棒,但是你也已经发现创立一个单一的layout去显示所有是优点挑战。然而Adaptive Layout有更多的工具和技巧来解决这些问题。adaptive layout中有一个核心概念叫size classes,一个size classes是一个属性可以应用到任何视图和视图控制器 来代替一系列水平或垂直 来显示的内容。在Xco翻译 2014-12-18 16:37:15 · 1468 阅读 · 0 评论 -
iOS 8 by Tutorials(翻译1.4)
1.4、自适应字体使用定制的size classes使得当前的文字大小在iPad上能很好的显示,但是在紧凑的size classes上还是太大。不要担心——通过size classes还是能够覆盖(兼容)文字大小。注意:和布局覆盖不一样,改变字体配置会影响基础布局,在IB更改字体配置不会遵守当前的size classes,相反,需要使用如下方法重新选择Any Width | Any H翻译 2014-12-18 16:38:36 · 1215 阅读 · 0 评论 -
iOS 8 by Tutorials(翻译1.1)
Section1:自适应布局iOS8中,你将有新的方法去建立界面,你有完全独立的设备、屏幕尺寸、分辨率和设备方向(device orientation),你将会了解collections的特性、size classes和通用的Storyboards,每一个功能不仅仅在现在的设备做好最好的interfaces,我想在将来也会一样。以开放的心态去阅读下面的要点,准备吃惊翻译 2014-12-18 13:33:54 · 1288 阅读 · 0 评论 -
xcode 创建静态库和动态库
1、linux中静态库和动态库区别:库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。静态库:这类库的名字一般是libxxx.a;利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函原创 2014-11-24 11:51:35 · 6584 阅读 · 0 评论 -
iOS_城市定位一二事
致谢:获取经纬度并且转换成城市iOS8定位失败解决获取中文城市1、建立简单的项目, 导入CoreLoation.framework:2、在Info.plist中加上NSLocationAlwaysUsageDescription值为AlwaysLocation:3、使用CLLocationManager对象进行定位:_locationManger = [原创 2014-11-25 18:17:08 · 1424 阅读 · 0 评论 -
CoreData不能再低调了
CoreData不能再低调了作为苹果官方推荐的数据管理模型,肯定会好用。最近我也特别喜欢用它,因为简单简单。1、建立一个自带CoreData的项目:2、建立一个命名为Person的CoreData对象:(其实在sqlite对应的建立了一个person表)3、给Person对象添加name和age的属性:(其实在person表添加了2个字段)4、导入CoreDat原创 2014-10-22 13:54:33 · 702 阅读 · 0 评论 -
多彩的Log就是这么炫酷
XcodeColors——早就听说这个强大的家伙,也傻傻的以为仅仅使用NSLog()就能打印多彩的颜色。真是天真了。这里是XcodeColors的下载地址这里是XcodeColors的说明文档虽然文档是很详细,但都是一些英文着实阻碍了一些人的使用,分享一下自己的实现步骤:1、下载后,运行XcodeColors->My Mac: 2、运行成功后可以在"~/Library/原创 2014-11-13 11:15:16 · 1172 阅读 · 2 评论 -
iOS json解析出错
对于json格式,我们并不陌生,但是因为它处于不同的语言标准也不一致。分享一下最近项目出现的json问题:1、编码问题,在不清楚服务端的编码格式的情况下,我直接使用: NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; NSError *error = nil; NS原创 2014-10-30 15:41:20 · 3862 阅读 · 1 评论
分享