- 博客(60)
- 资源 (6)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 HDDNetworking网络组件
基于AFNetworking的v3.1.0进行网络请求,基于PINCache的v3.0.1进行网络数据缓存,支持清除指定url缓存、url及参数组合缓存,通过AFNetworkActivityLogger进行网络log打印。该代码使用灵活的请求方式,不包含任何业务代码,上层支持集中式、分布式网络接口管理方式,在请求前可以对请求进行配置,也支持对网络请求后返回的数据进行统一处理。一、目的HDDNet
2017-09-11 16:38:40
585
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 UITableView如何开启极简模式
UITableView作为iOS开发的最常用的控件,相信对我们开发来说再熟悉不过了,但是越简单的越熟悉的东西,往往也可以看出代码的质量,项目的结构等问题。本文针对 **UITableView中如何适应需求多变(新增删除、经常调换位置、高度变动等等)的通用解决方法** 及 **如何避免同一套完全相同的UITableViewDelegate、UITableViewDataSource代码在不同UIViewControl
2017-02-16 16:24:05
1785
1
原创 iOS依赖库版本一致性检测:确保应用兼容性
本文介绍一种iOS依赖库版本一致性检测方法,分析App包依赖的系统库列表及最低系统版本号V1,在官方API获取库最低支持版本号V2。比较V1与V2可快速准确地发现版本不一致问题,提高应用兼容性和安全性。
2024-04-16 15:31:49
592
原创 iOS多语言解决方案全面指南
本文以及相关工具和代码旨在为已上线的iOS项目提供一种快速支持多语言的解决方案。由于文案显示是通过hook实现的,因此对App的性能有一定影响;除了特殊场景的文案显示需要手动支持外,其他任务均已实现自动化。
2023-06-26 16:56:15
3453
原创 Swift之struct二进制大小分析
随着Swift的日渐成熟和给开发过程带来的便利性及安全性,京喜App中的原生业务模块和基础模块使用Swift开发占比逐渐增高。本次讨论的是struct对比Class的一些优劣势,重点分析对包体积带来的影响及规避措施。
2023-01-22 17:44:06
757
2
原创 iOS番外-搞点音乐玩玩
这是一个可以让iOS小白用户,直接根据钢琴或者其他乐器的简谱,直接开发一个可以播放的简单教程,底层使用CoreMIDI.framework来实现,中层使用开源的MIKMIDI库来实现,上层将简谱设计成合理的数据结构,将简谱数据进行对象化管理,业务方简单调用进而直接上手使用。作者:HarryDeng链接:https://juejin.cn/post/7075638987712364580来源:稀土掘金著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
2022-03-16 22:21:24
5186
1
原创 iOS代码覆盖率(二)-增量覆盖率自动化实践
全量代码覆盖率可以直观的看到整个App的代码的覆盖率情况,但是往往有用的或者被关注的是增量代码覆盖率数据。经过不断的学习和探索,发现在基于git diff能力,通过一系列的处理获取我们想要的增量的信息,结合覆盖率信息,得到一份增量的覆盖率信息。一、获取代码diff这里依旧以本工程demo为例进行说明1、找到两次提交确认增量代码通过 git log 找到最近一次(多次)的改动日志:$ git logcommit a8692db2716eeb909aa9a9e48a89ac1a5368fa1.
2022-01-06 14:43:34
3105
原创 iOS代码覆盖率(一)-全量覆盖率自动化实践
简介这是一个统计基于 Swift & Objective-C 工程的代码覆盖率的自动化脚本。之所以做成 Pod ,是便于更好的复用,该 Pod 只包含了收集生成代码覆盖率的脚本。整体比较简单方便。这里只将流程,咱不讲原理。后续另外介绍这里只将流程,咱不讲原理。后续另外介绍使用1、安装:通过 CocoaPods 进行安装,在你的 Podfile 文件添加如下代码:pod 'HDCoverage'然后 pod install 安装下载相关脚本文件。2、关联脚本:在项目的 Xcode
2022-01-06 14:42:14
2521
翻译 Source-based Code Coverage
原文: Source-based Code Coverage基于源码计算代码覆盖率一、简介这个文档展示如何通过 clang基于源码 条件下计算代码覆盖率特性。因为它是直接操作AST和预处理阶段,所有称为 “基于源码” 的代码覆盖率。并且能够生成非常准确的覆盖数据。clang 提供两种代码覆盖率的实现:SanitizerCoverage : 它在函数、基本块和边缘级别插入对用户定义函数的调用。提供了这些回调的默认实现并实现了简单的覆盖率报告和可视化。低开销、简单的代码覆盖率。gcov:是GC
2021-11-02 11:09:40
1747
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
402
原创 使用Xcodeproj修改依赖库顺序
基于某种特定的需求,需要动态的按照特定的顺序来对项目依赖的库进行排序,得知 Cocoapods 团队大佬已经开发了 Xcodeproj 来管理工程的配置,所以本次记录一下使用 Xcodeproj 来完成我的目的具体的代码如下:require 'xcodeproj'def priorityDependencesFunction(dependencies) # 自定义依赖排序库(下面的排序优先级最高) priorityDependences = ["SDWebImage", "Coc.
2020-10-10 17:11:07
1124
原创 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
8891
4
原创 webpack学习
webpack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。 webpack的工作方式是:把你的项目当做一个整体,通过一个给定的主文件(如:index.js),webpack将从这个文件开始找到你的项目的所有依赖文件,使用lo...
2018-04-09 13:41:23
415
原创 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
22885
2
原创 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
5611
原创 Mac执行定时任务之Launchctl
launchctl是一个统一的服务管理框架,启动、停止和管理守护进程、应用程序、进程和脚本。下面讲述一下如何在Mac上使用launchctl执行定时任务。一、编写一个plist文件launchctl 将根据这个plist文件的信息来启动任务,plist文件中的关键字可以在 苹果官方文档 找到,值得注意的是 Label 对应的值需要保证唯一性,作为任务的唯一标示。可以使用如下命令来验证plist格
2017-07-06 14:20:17
11679
1
原创 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
11151
原创 GCD相关知识点
GCD相关知识点多线程技术–GCD 深入学习GCD GCD 深入理解:第一部分 GCD 深入理解:第二部分 1、 GCD(Grand Centra Dispatch)中队列分类:串行与并行在使用GCD的时候,我们会把需要处理的任务放到Block中,然后将任务追加到相应的队列里面,这个队列,叫做Dispatch Queue。然而,存在于两种Dispatch Queue,一种是要等待上一个执行完,再执行
2017-06-20 10:18:58
449
原创 SSH相关知识点
SSH(Secure SHell)基于密钥的安全验证:需要依靠密钥,也就是需要为自己创建一对密钥,把公有的密钥放在需要访问的服务器上,客户端向服务器发送请求时,需要使用密钥进行安全验证:服务器收到请求之后,先在该服务器的用户根目录下需要你的公有密钥,然后把它和你发送过来的公有密钥进行对比,如果一致则服务器认为你这次请求有效并且响应你。从而避免被“中间人”攻击。SSH如何生成?1、设置git的use
2017-06-19 17:18:59
469
原创 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
4471
原创 使用CocoaPods的一些仓库说明
使用CocoaPods的一些仓库说明:CocoaPods官网 1、pod使用官网的仓库的关联代码(这些代码需要cocoapods审核通过才能被其他人使用,而且每次稳定的代码版本需要打上tag方便使用者选择对应的tag代码)上传至cocoapods的公开的 仓库 使用 pod setup 或者 pod install 时会从仓库中下载到本地,存放在电脑的 .cocoapods/repo/master
2017-03-23 17:47:55
1334
原创 appium2-基于python调用unittest框架对iOS进行自动化测试
appium2-基于python调用unittest框架对iOS进行自动化测试 紧急上篇的 appium1-macOS10.12下如何丝滑的使用appium? 我相信环境问题已经解决完毕,虽然下载demo并且体验了一次完整的自动化流程,但是有太多的疑问在后面等着我们。这里我总结了一下自动化测试代码一些说明,比如关键字及输出结果等等,这是一条漫漫长路,需要耐心细心。先来几篇优秀的文章开开胃:P
2017-02-06 12:22:54
3028
3
原创 iOS之两圆之间标准圆的随机生成
相信很多社交产品中,肯定会存在寻找附近人或者附近商家的需求,类似下图,在大圆和小圆之间(橘色区域)生成一系列的随机圆,并且所有随机圆之间也不能有交集,我暂且称这种圆为标准圆。 关于这样的需要以前在做项目中有同事做过,虽然可以实现了上面的效果图,但是坐标及半径都是写死,从写死的数据随机取值,看上去是满足了,但是对于用户来说多次使用该功能时,肯定有一定的视觉疲倦,且写死的一些数据真的不好写,如
2017-01-16 15:06:12
2010
5
原创 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
3693
8
原创 iOS10 本地通知
概序:主要实现iOS10中 UserNotifications 对带选择控制的本地通知的使用,只要点击了当日日的通知或者进入了app,当日的本地通知不再相应功能;使用 3D-Touch 在桌面上来快速启动app的功能;使用后台多任务功能;1、本地通知:iOS10 全新的 UserNotifications 框架将iOS系统的远程和本地通知做了统一的管理,下面介绍一下本地通知
2016-12-22 18:13:37
1386
原创 直播技术汇总
做一款仿映客的直播App?看我就够了直播时代--IOS直播客户端SDK,美颜直播一、直播一些技术名词1、什么是FFmpeg ,FFmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,它提供了录制、转换以及流化音视频的完整解决方案。直播系统多使用该方案。2、什么是RTMP(Real Time Messaging Protocol:实时消息传输协议)
2016-10-20 13:52:31
8533
2
原创 ACK分享
ACK分享 相关资料:ack官网 the5fire的技术博客 linux下的高效代码搜索工具-ackLinux下比grep更快速的检索工具ack-grep安装如何在Linux上提高文本的搜索效率1、简单介绍:i. 它是高效代码搜索工具;ii.它和 grep(强大的文本搜索工具) 很像, 但是对于开发者来说做了进一步的优化, 目的就是要取代 grep ;iii.它纯粹的写在 Perl 5(脚本语言...
2016-09-25 18:52:25
1818
1
原创 kerkee 之Web和iOS开发使用篇
简单认识:kerkee 是一个多主体共存型 Hybrid 框架,具有跨平台、用户体验好、性能高、扩展性好、灵活性强、易维护、规范化、集成云服务、具有Debug环境、彻底解决跨域问题。该框架从开发者角度支持三种团队开发模式:Web开发者 、Native开发者 、Web开发者和Native团队共同合作的开发团队 。下面我将从 Web开发者和Native(iOS)团队共同合作的开发团队 模式来分
2016-06-17 19:34:00
2793
转载 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
3516
原创 Rollout学习1 简单使用篇
Rollout 是国外开发者一个基于iOS运行时注入OC格式化的JS代码来修复/更新App的热修复工具,它有一套自己的JS命名空间及OC代码和JS代码转换的协议,而且它的功能强大且使用简单,文档详细且人性化。对版本兼容也做了可视化界面方便使用者操作,所以目前来说超过一定的月激活量后会收费,但是一切是值得的。
2016-05-18 16:05:38
3031
原创 Rollout学习2 JS和OC代码对照篇
Rollout 是国外开发团队一个基于iOS运行时注入OC格式化的JS代码来修复/更新App的热修复工具,它有一套自己的JS命名空间及OC代码和JS代码转换的协议,而且它的功能强大且使用简单,文档详细且人性化。对版本兼容也做了可视化界面方便使用者操作,所以目前来说超过一定的月激活量后会收费,但是一切是值得的。
2016-05-18 15:08:01
1267
1
翻译 UIWebView 的秘密
1、UIWebView 的秘密-第一部分 Xmlhttprequest上的内存泄漏原文地址:UIWebView Secrets - Part1 - Memory Leaks on Xmlhttprequest 我的第一个博客主要揭示使用UIWebView 时出现的大的内存泄漏。UIWebView 是 iPhone 上唯一展示HTML 的控件。UIWebView 有很
2016-05-14 10:27:02
841
原创 git submodule 管理子工程
当多人共同维护一个项目时,必然需要进行模块化开发,所以使用submodule来管理子工程很有必要。本文以图文并貌的形势进行一步步搭建主工程及绑定子工程。
2016-05-09 22:28:54
4757
原创 UIImage size压缩后图片下面出现白色线问题
使用- (UIImage *)getResizeImageWithSize:(CGSize )size{// 创建一个bitmap的context// 并把它设置成为当前正在使用的context, UIGraphicsBeginImageContext(size);// 绘制改变大小的图片[selfdrawInRect:CGRectMake(0,0, size.width, size.he
2016-01-11 14:17:43
1489
原创 少儿读图隐私声明
隐私权声明——概述本隐私权政策详细说明了“少儿读图”应用程序和网站收集的信息,以及我们将如何使用这些信息。1.”少儿读图”不会通过我们的应用程序或网站收集儿童的个人信息。我们深知用户个人信息的重要性,特别是对于未成年人。在我们的应用程序及网站中,不要求用户输入详细个人信息资料。“少儿读图”承诺所读取到的任何信息,只被使用于”少儿读图”软件的开发,而不会透入给第三方(其它个人或公
2016-01-11 00:29:04
566
原创 JS和OC相互调用
1、现状:人人都是产品经理 聊聊Web App、Hybrid App与Native App的设计差异标点符(钱魏 Way) Native App、Web App 还是Hybrid App?1)Native APP:Native Code编程,代码编译之后以2进制或者字节码的形式运行在OS上,直接调用OS的Device API;2)Web APP,以HTML+JS+CSS等WEB技术编程,代码运行在浏
2015-12-02 09:48:37
4561
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人