iOS 开发问题踩坑
文章平均质量分 77
一些在iOS 开发中遇到的问题
Code&Ocean
遨游在编码海洋中。
iOS Developer
展开
-
iOS 收集打印日志
可以将要在Xcode 控制台打印的日志写在沙盒,最后导出分享,进行问题分析。正式版本不建议使用,避免增加用户内存。配合解决顽固 Bug 可以通过该方法收集打印日志。原创 2024-08-30 21:30:00 · 670 阅读 · 0 评论 -
无符号整型数0减1
无符号整型数0减1是一个很大的正整数哟。原创 2024-04-01 20:00:00 · 905 阅读 · 1 评论 -
iOS 获取本地图片URL
有时候我们需要在代码中读取图片的 URL,但是需要注意的是:在 Assets 中的图片,会经过编译无损压缩,无法通过 Path 读取,只能通过 named 方法读取,这种情况我们应该怎么获取图片 URL 了?原创 2020-04-16 18:26:29 · 6554 阅读 · 0 评论 -
iOS UITest之加载其他应用
通过 XCUIApplication 唤醒其他应用,进行操作交互。原创 2021-12-14 17:02:33 · 2630 阅读 · 0 评论 -
iOS模拟器发送通知和UI测试
我们可能通过点击通知直接跳转到页面指定页面,或者点击通知打开web页面,更或者通过其他应用启动 app打开指定页面。面对这种跳转指定页面我们应该如何做 UI测试了?原创 2021-12-11 17:43:53 · 3281 阅读 · 0 评论 -
iOS混编参考阅读
鉴于 Objective 已经打下了一大片江山,但是还是要将江山与 Swift 共享,所以就涉及到项目使用 Objective-C 和 Swift混编,如果让这两种语言更加相互融合,充分利用 Swift 的语言优势了。怎样让 Objective-C 更便利桥接给 Swift以下内容来源于师大小海腾–掘金,详情建议阅读原文,原文有许多举例和相关参考阅读。iOS 混编|为 Objective-C API 指定可空性关键词:nullable、nonull、null_resettable、null_rese转载 2021-11-23 15:58:54 · 1055 阅读 · 0 评论 -
Git 只拉取部分文件
Git 只拉取部分文件git sparse-checkout 稀疏检出功能sparse-checkout稀疏检出是 git 官方提供的命令,可以做到部分文件拉取。主要是一下步骤:mkdir filename 创建本地文件目录git init加入 git 版本管理git config core.sparsecheckout true开启稀疏检出功能在.git/info目录下新建sparse-checkout文件该文件的编写语法与.gitignore 忽略文件方式一致wantfiledir原创 2021-04-26 11:43:22 · 8048 阅读 · 0 评论 -
iOS 定时器使用(Timer 和 CGD)
在程序开发中,我们常常借助定时器完成定时任务,比如短信验证码倒计时、运动计时等具有时间序列概念的操作。最常用的定时方式有Timer 和GCD dispatchTimerTimer的使用Timer 官方文档Timer/NSTimer: 在某个时间间隔之后触发的定时器,向目标对象发送指定的消息。 Timer 的完成往往配合runloop和相应的 mode。初始化创建即添加到当前 runloop通过带 scheduledxxx方法初始化的定时器,创建就会添加到当前 runloop ,且以 defau原创 2021-04-13 17:33:41 · 3370 阅读 · 0 评论 -
iOS Status Bar 状态栏设置汇总
总结:1) Status bar is initially hidden为NO时View controller-based status bar appearance不生效2)View controller-based status bar appearance为NO时preferredStatusBarStyle和prefersStatusBarHidden方法不生效3)UIViewController 在 UINavigationController 导航栏中时,在UIViewControlle转载 2020-12-30 15:47:20 · 3085 阅读 · 1 评论 -
TableView/CollectionView 滑动顶部效果优化
TableView/CollectionView 滑动顶部效果优化默认弹簧效果在使用 UITableView 或者 UICollectionView 时,如果开启弹框效果,下拉是整个内容就会偏移,松手就会自动弹回,最常用的就是我的界面。如果scrolleView背景色和 cell/header 一样就不会产生什么突兀感,但是如果靠近顶部的视图是渐变/图片 或者和背景色差别较大,下拉就会产生突兀感。如下图那么怎解决了。将 ScrollView 的偏移量传递到 Cell 中处理,进行子视图的偏移处原创 2020-12-07 14:09:15 · 432 阅读 · 1 评论 -
iPhoneX(刘海屏)适配
iPhoneX(刘海屏)适配在 iOS11的时候,苹果破天荒发布了一款新屏幕样式的手机,俗称刘海屏。世人皆道丑,而后纷纷买之。自此,iOS 开发者们也走向了 iPhoneX系列的适配之旅。区别状态栏,导航栏的改变和底部 Home Indicator的新增 。普通屏幕iPhoneX(刘海屏)系列状态栏高度2044导航栏高度6488tabBar4983(其中有34Home Indicator交互区)导航栏实际内容展示高度还是44,只是状态栏变高。使用原创 2020-11-06 10:53:55 · 1634 阅读 · 0 评论 -
RN pod install 失败(could not find compatible versions for pod “React/Core“)
使用最新版本 React-Native(0.63) 准备嵌入原生项目时, 按照官网教程集成到现有原生项目, 一步一个脚印, 到 pod install 出现如下错误[!] CocoaPods could not find compatible versions for pod "React/Core":In Podfile:React/Core (from `../node_modules/react-native`)None of your spec sources contain a spec原创 2020-09-14 17:57:36 · 1579 阅读 · 1 评论 -
避免在Swift Struct中使用闭包
为什么我们应该避免在结构体使用闭包我们所有人都喜欢闭包,你难道不喜欢吗? Closure能够让iOS开发者生活更轻松。如果它让我们更轻松了,那为啥我还要说不在在结构体中使用闭包了,原因就是:“内存泄露和发生不可预料的事”,你会不会有为啥Swift结构体会发生内存泄露问题的疑问?Swift 结构体是值类型,按道理不会发生内存泄露,事实真的如此吗?我们已经有很多疑问了,接下来我们看看Swift基本...翻译 2020-04-15 14:32:55 · 692 阅读 · 0 评论 -
MacApp开发Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be
在开发一个Mac端应用插件时,准备进行网络请求,刚开始遇到错误,我很快明白是需要设置允许http网络,但是之后一直遇到 finished with error - code: -1003 Error Domain=NSURLErrorDomain Code=-1003 "A server with the specified hostname could not be found. ,创建一个...转载 2020-03-28 17:39:06 · 3605 阅读 · 2 评论 -
Swift直接解析YApi接口为模型
如果你的接口平台使用的是YApi接口,开发语言使用Swift,那么一定要尝试一下这个Xcode插件,一键转化为Swift模型,还带注释哟github原创 2020-03-27 17:56:09 · 303 阅读 · 0 评论 -
pod install 失败 Сocoapods trunk URL couldn't be downloaded
pod install失败错误信息:Сocoapods trunk URL couldn’t be downloaded在Podfile中添加source 对于我来说有效source 'https://cdn.cocoapods.org/‘原创 2020-03-19 18:09:41 · 2940 阅读 · 0 评论 -
iOS 减少编译时间
每次在Xcode中写完代码,我们可能都需要按CMD + B 编译一下,或者直接按CMD + R运行,在某些项目中,等等编译的时间总是特别长,如何能减少编译时间了?原创 2020-03-13 15:43:57 · 1441 阅读 · 1 评论 -
GitHub高效搜索
GitHub高效搜索GitHub对于开发人员来说,多么重要就不用多说了吧!那么你会搜索吗?怎么从茫茫大海找到适合自己资源了。以下搜索以找一个Swift的网络框架为目标普通搜索我们打开GitHub官网,然后在搜索栏输入信息network,发现有31万个结果,从结果中过滤语言,和sort选项 ,发现还是有几千个搜索结果,不只到哪一个才是自己想要的。宛如大海捞针,就像下面这张图片一样。adv...原创 2020-03-13 15:09:25 · 476 阅读 · 0 评论 -
git clone 加速小技巧
通过国内码云(或者其他代码平台)转存[比如码云就支持从github 拉取代码建仓库,码云自己转存又非常快],然后从国内平台地址clon,速度极快。原创 2020-03-13 09:58:49 · 507 阅读 · 0 评论 -
Cocoapods的Podfile使用
Cocoapods的Podfile使用对于第三方库集成,现在最受欢迎的就是基于Ruby语言实现的Cocoapods,可以很方便的管理引入库,当然你也可以使用Swift Package Manager 或者 Carthage。 现在我们来看看有哪些使用姿势。如何创建Podfile创建Podfile文件有很多种方式,最简单的方式应该是打开终端进入项目路径,执行pod init命令,会自动添加ta......原创 2020-03-12 14:37:59 · 7216 阅读 · 0 评论 -
Swift JSON转模型Xcode插件
SwiftJSONModeler是一个Xcode插件,一键转换json字符串为Swfit模型,一键转化 YApi 平台接口为模型,并且自动引入注释。原创 2020-02-07 16:55:58 · 1234 阅读 · 0 评论 -
CocoaPods私有库创建
CocoaPods私有库创建参考链接为什么要使用私有库和私有库索引对于个人来说,可以进行代码积累。我们在创建新项目,很多基础代码会进行复用,都会引入自己常用的代码。还有一些自定义代码,快速代码,等等代码的积累,这些代码你不可能每次都复制粘贴吧,有没有什么方法既能同步,又不公开,还可以随时更新了?对于项目而言,有利于模块化和高复用。可以使用私有库,建立私有索引,在公司项目内部实现模块...原创 2020-01-14 17:39:04 · 169 阅读 · 0 评论 -
ValueTransformer
ValueTransformer如其名,就是进行值转换的,将一个数据结构转换为另外的数据结构,比如当后台传入模型与显示模型存在较大差异时使用。ValueTransformer类介绍本身是一个抽象类,用来进行值转换,使用的时候需要继承创建子类实现其方法。转换器基本信息方法向外部传递基本的转换结果类型, 是否允许反转等,注意是类方法哟。 /// 转换输出类型类 open cla...原创 2020-01-07 14:20:38 · 564 阅读 · 0 评论 -
Xcode代码文件模板
通过定义模板提高开发效率原创 2019-12-06 14:38:54 · 1542 阅读 · 0 评论 -
Swift extension 扩展实用Tips
extension基本功能Swift扩展是为结构体、类和枚举增加新功能。与OC的分类相似,但是没有扩展名字。常用于:添加类/实例计算属性 添加类/实例方法 提供新便携初始化器 定义和使用新内嵌类型 使现有类型遵循某些协议 定义下标更多的使用extension 可以使您的文件层次化,文件结构更清晰,更加具有面向协议编程效果,后期优化的时候能更方便。为协议提供默认实现S...原创 2019-11-07 14:06:26 · 746 阅读 · 0 评论 -
如何高性能添加UIView阴影
原文链接:How to add a shadow to a ViewiOS 能够动态的为任何UIView添加阴影,这些阴影是自动适应元素的形状,即使像UILabel这种文本曲线, 阴影功能是内置在UIView中的。你只需要关心和设置他的属性就ok啦有如下常用相关属性(针对UILayer层的):shadowColor: 设置阴影的颜色,必须是CGColor类型的。 shadow...翻译 2019-11-06 17:10:00 · 907 阅读 · 0 评论 -
Instruments--CoreAnimation页面性能调试
Instruments是什么我的理解就是一个调试工具集,常用来调试性能优化,页面优化,fps响应,检查内存性能等。完整介绍与操作【你看】Xcode打开方式:Xcode 11中的Instruments工具集CoreAnimation是什么CoreAnimation主要用于查看视图性能,页面fps,常常用于页面性能优化。CoreAnimation测试选项...原创 2019-11-06 16:02:13 · 2404 阅读 · 1 评论 -
Swift 字典转数组
Swift 字典转数组1.Swift 类型的字典(Dictionary)let dic = ["name":"Tom","gender":"male","address":"XXXX省XXX市","age":76] as [String : Any]print(dic.keys) // ["address", "name&原创 2019-01-15 11:51:02 · 3088 阅读 · 0 评论 -
Swift 扩展存储属性
Swift扩展存储属性Swift默认只能扩展计算属性无法扩展存储属性,如果想扩展存储属性就需要使用runtime。使用runtime的两个核心方法(关联对象)/// 设置值/// - 参数1: 为哪个对象设置 参数2: 属性的指针地址(&+属性) 参数3: 属性的值 参数4:属性的修饰类型枚举值(可以理解为OC 属性关键字weak、copy等)public func...原创 2019-01-01 16:37:05 · 1723 阅读 · 0 评论 -
UITableView reloadData 跳动闪动
问题在使用表格TableView的时候,常常需要 根据数据更新表格,最常用的方式就是reloadData一般情况下是没有什么问题的,有时候会遇到cell或者section跳动,产品大大肯定是要打死你的。原因(转自 曾经像素有点低)因为iOS 11后系统默认开启Self-Sizing;Self-Sizing——官方文档是这样解释的:大概就是说我们不用再自己去计算cell的高度了...转载 2018-10-24 16:12:54 · 5586 阅读 · 2 评论 -
常用git命令思维图
git常用命令思维导图问题解决一.大文件限制(超过100M)报错提醒:remote: warning: Large files detected.remote: error: File xxx/BDSClientLib/libBaiduSpeechSDK.a is 200.58 MB; this exceeds file size limit of 100.0 MB...转载 2018-09-26 10:07:51 · 283 阅读 · 0 评论 -
Swift 泛型函数补充
Swift 泛型函数【中文参考文档】泛型使用的基本原则,执行时候需要知道具体泛型类型,即要么通过参数确定类型,要么通过返回值推导类型。参考文档中已经给出来基本的泛型使用。基本都是通过参数去定类型通过返回值推导泛型类型protocol TProtocol{ var desValue: String { get }}extension String: TProto...原创 2019-05-31 11:17:30 · 1250 阅读 · 0 评论 -
JSONSerialization.ReadingOption详解
JSONSerialization.ReadingOption详解官网链接: JSONSerialization在通过JSONSerialization来转换json,你有没有这样的疑问了????,下面函数的参数ReadingOption是干啥的,注释又在说些啥。JSONSerialization.jsonObject(with: Data, options: JSONSeriali...原创 2019-06-22 15:29:17 · 2287 阅读 · 0 评论 -
Swift 数字字符串格式化
字符串格式说明符官网文档:String Format Specifiers字面值格式化法如果需要直接显示原样值的时候,只可以方便的在字符串中插入\(变量)显示。字面值格式: 字符串中包裹着\()let str = "This is string"let intValue = 10let doubleValue = 12.200print("字面值:\(str)") ...原创 2019-07-19 16:11:05 · 3411 阅读 · 0 评论 -
iOS 清除未使用图标
随着项目开发时间过长,多人协作开发和版本迭代,会造成一些图片资源没有及时删除和替换,同是打出来的Api包就会增大。处理方式如下1.王巍大声的蜂鸟:https://github.com/onevcat/FengNiao2.蒙娜丽胖-掘金:Python-一键查找iOS项目中未使用的图片、音频、视频资源【资源仓库】...转载 2019-08-14 09:50:37 · 390 阅读 · 0 评论 -
常用服务器返回码意义
400 错误请求 — 请求中有语法问题,或不能满足请求。 404 找不到 — 服务器找不到给定的资源;文件不存在500 内部错误 — 因为意外情况,服务器不能完成请求 或者出问题了2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。 203 正常;部分信息 — 返回的信息只是一部分。...转载 2018-07-24 17:34:37 · 342 阅读 · 0 评论 -
BlendMode颜色混合模式枚举值
BlendMode参数值及表现形式blendMode作用在对图片进行手动处理的时候,可能用到图层混合,如改变图片的颜色。常常获取CGContext,然后设置其blendMode参数。为了形象理解BlendMode值的变化,我使用了一张主图标和辅图标(支付宝图标)作为测试,测试颜色为红色,注释中有序号的可以对应其变换结果BlendModel参数值结束如下(转): swi原创 2017-07-21 11:52:01 · 12609 阅读 · 0 评论 -
iOS开发图片纯色填充(两种方式)和缩小图片
在开发中很多时候需要将图片纯色化,比如纯色化图标,可以使用以下代码片段://纯色化图片- (UIImage *)setImage:(UIImage *)image toColor:(UIColor *)color{ UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale); CGCont原创 2017-03-22 15:49:08 · 4625 阅读 · 0 评论 -
iOS导航栏遮挡
在iOS开发中UINavigationViewController是一个非常重要的控件,可是有时候使用时会导致导航栏遮挡视图的问题,(比如先做好约束,后添加导航栏的时候就有可能)。当我在视图中添加一个tableview和一个collectionView的时候,遮挡问题如下图:解决办法:1.在使用storyboard做布局的时候,一开始就设置top bar为有导航栏的(如下图原创 2017-06-28 00:16:34 · 3481 阅读 · 1 评论 -
StoryBoard布局注意事项
StoryBoard布局注意事项 对于一个懒人来说,相对于代码写界面,我更喜欢使用可是化布局,可以实时看到,可是终究还是代码执行,所以很多东西还需要在代码中去做,所以我还是鼓励打家多用代码编写界面。1.生命周期注意事项不要在Controller的viewWillLoad中去使用来自于可视化布局布局和尺寸(特别是frame或bound)原因:在这几个方法中,可视化布局的约束并没有生效...原创 2017-08-03 12:38:16 · 975 阅读 · 0 评论