自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

jianghui12138的博客

iOS技术博客

  • 博客(78)
  • 资源 (2)
  • 收藏
  • 关注

原创 开发千万步,避坑第一步

UITableView 在 iOS14 上又遇到坑了之前项目中有使用到 UITableView reloadRowsAtIndexPaths:withRowAnimation: 方法刷新列表,而且实际效果也一直很正常。但是,自从升级了 Xcode12 并在 iOS14 设备上运行之后,发现闪退了。经过了一番调试,发现最后的问题在于 [NSIndexPath indexPathForRow:-1 inSection:0]。当使用 -1 初始化时,就会出现闪退,闪退日志如下:2020-10-09 17:1

2020-10-09 18:01:06 474

原创 iOS14 UITableViewCell & UICollectionViewCell 中还是乖乖使用 contentView 吧

做过 iOS 开发的,一般都使用过 UITableView UICollectionView,也就会用到 UITableViewCell UIColletionViewCell,在 iOS14 之前,使用UITableViewCell 或者 UICollectionViewCell 添加控件的时候,不管使用 [self addSubview:]; 还是使用 [self.contentView addSubview:];,最后的视图层级都是一样的。但是在 iOS14 上,视图层级发生了一些变化。而这个变化,会

2020-09-30 23:34:34 1678 1

原创 猜一下淘口令如何适配iOS14的

iOS 14 新增剪切板权限随着 iOS 14 的发布,剪切板的滥用也被大家所知晓。凡是 APP 读取剪切板内容,系统都会在顶部弹出提醒,而且这个提醒不能够关闭。这样,大家在使用 APP 的过程中就能够看到哪些 APP 使用了剪切板。众所周知,淘宝 APP 在各个社交平台传播分享是通过淘口令的,被分享者通过复制淘口令打开淘宝 APP 可以定位到分享的商品,完成购买。而这个步骤就是通过读取剪切板内容实现的。那么,在 iOS 14 上,只要启动淘宝,就会出现系统提示,淘宝读取了剪切板内容。淘口令适配 iO

2020-09-24 11:03:08 2134

原创 一个微信可以有多个头像昵称了

不知道什么时候开始,微信授权登录做了修改,在授权页面下边会多个 + 图标,点击这个图标会跳转个新的页面,在这个新的页面可以添加头像昵称,也可以随机生成。生成完之后,就可以在第三方 app 授权的时候使用了。这样的话,一个微信账号,可以在不同第三方应用使用不同的头像昵称了。其实,这个小的新功能还不错,应该满足了一部分人的需求。只是,这个授权会有缓存,在第一次出现这个页面之后,后面再授权会直接返回数据,至于缓存多久,就不清楚了。这样就可能造成一个问题,有的人用了一次好久没见这个页面就忘记了,后面再去看发现头

2020-05-21 21:22:09 15014

原创 LaunchScreen.stroyboard 黑屏(black)

之前有篇文章已经写了关于 iOS 替换启动图显示的问题。最近又更换了启动图,发现之前的总结有些错误,这里统一再更新一下。我按照之前的方法,将图片名字换了之后,是没有问题的。但是有些设备更新或者重装都会出现黑屏,而且重启设备、Xcode 清除缓存都是没有用的。其实显示的黑屏就是 LaunchScreen.storyboard 中布局的底色,如果换个背景色,就会发现其实视图会正常显示,只是图片有时...

2020-05-08 15:10:18 584

原创 使用 Universal Links 遇到的问题

前段时间,升级微信分享SDK,需要支持 Universal Links ,所以跟运维一块配置了相关文件。配置方式还挺简单,只是配完之后遇到了一些问题。检测配置是否生效。其实检测的话,直接将地址放到浏览器或者备忘录中尝试即可。不要使用苹果官方地址检测。我们配置后的网址,经苹果检测是无效的,但是微信、QQ检测都是可以的,而且在浏览器、备忘录中都可以唤醒自己的 APP。某些设备微信分享,每次都会...

2020-05-08 14:44:57 708

原创 别在想随意改变 iOS APP 图标了

作为客户端开发来说,改变 APP 图标可能是永远存在的需求。可能是产品经理的需求,也可能是老板或者技术老大的想法。或许 Android 已经可以完美的实现,但对于 iOS 来说,即便可以实现替换,但是有前提条件。从 iOS 10.3 开始,支持应用程序换图标。现在市面上也有应用程序实现了这个功能,但可能跟理想有些不一样。苹果开发指南中提到过,APP 图标更换有几点需要注意的:需要用户明确知...

2020-04-02 12:03:15 749

原创 iOS开发注意了,一些需要适配的内容

苹果最新通知,截止到 2020.6.20,app需要做以下适配。1. 启动图使用 storyboard。2. 使用第三方登录的需要同时接入苹果登录。3. iPhone app 需要适配所有 iPhone 屏幕,iPad app 需要适配所有 iPad 屏幕。还有关于 UIWebview 的替换,已有的 app 最后期限是 12 月份。参考链接:ht...

2020-03-27 09:19:00 501

原创 NSMutableDictionary 存放空值

在开发中,使用 NSMutableArray 过程中遇到 nil 就会闪退,那么,NSMutableDictionary 中可以存放 nil 吗?看下面的代码片段:使用字面量可以赋值为 nil,也可以正常运行,但是使用 setObject:forKey: 方法,不能够设置为 nil 。而且,使用 setObject:forKey: 方法时,设置 id 类型,编译不会报错,运行时会崩溃。而使...

2019-12-06 15:07:58 808

原创 Xcode 11 修改应用名称

Xcode 11 已经更新两个月了,虽然中间迭代了几个版本,也有一些 bug ,不过相比去年来说,bug 影响范围算是很小了。不过,除去一些显而易见的问题,有些小地方也有了变动,没有遇到还真的不会发现。今天要说的地方是修改应用名称,对app包名称产生的影响。通常情况下,修改应用名称有两种方式general -> Identity -> Display Nameinfo.pli...

2019-11-18 21:19:33 2835

原创 swizzle 一时爽,UIActivityViewController bug 无处找

多个库的 swizzle 重复造成的冲突。导致系统方法出现异常。针对 1 之前有篇文章介绍过,这里着重介绍下第二种情况。通常想要分享多张图片,会使用系统的类 UIActivityViewController。我也是使用这个类进行分享的时候,发现通过信息分享图片右上角的取消按钮不见了,请看下图:正常情况下,显示如下:这是我遇到的情况:这里很明显是导航栏上的显示出现问题,所以,优先...

2019-07-21 15:00:51 514

原创 列表测试翻三页,上拉下拉都正确

在 app 的开发过程中,使用列表 UITableView UICollectionView 很常见,而一旦用到列表,那便会涉及到两个功能,下拉刷新和上拉加载更多。可能刚开始实现这两个功能的时候不会有什么问题,但是代码重构或者调整的时候便可能出现问题。不管下拉刷新还是上拉加载更多,我们在刷新状态下获取到数据之后,都会调用方法使得刷新状态结束,如果忘记了,便不会有下次刷新的触发。为什么呢?这里以...

2019-07-15 10:33:30 179

原创 SDWebImage的误使用以及Xcode编译无警告导致的项目崩溃

前段时间因为图片的加载导致了 app 的崩溃,总结下来有几个原因。自己使用 SDWebImage 失误导致了崩溃。Xcode 没有给出合适的警告,没有察觉到自己的失误。SDWebImage 老版本对渐进式图片加载处理不好。首先,说下我是如何错误使用的,请看代码:[[SDWebImageDownloader sharedDownloader] downloadImageWithURL:...

2019-06-30 16:16:16 651

原创 友盟统计多参数自定义事件无效原因以及快速定位友盟统计遇到的问题

如果使用友盟进行自定义事件多参数统计,友盟后台没有相关参数值时,请检查两方面。友盟 sdk 版本。老版本是不支持的,我现在使用 6.0.3 版本,请确保你的 sdk 确实支持。注意你设置的参数的 key 不要与友盟的重复。iOS 参考下面截图,文档地址为 iOS 友盟文档地址。android 参考下面截图,文档地址为 android 友盟文档地址。当然,我只是把自己遇到的问题...

2019-06-28 20:57:05 4371

原创 没事别想适配iPad

对于 iOS 开发来说,可以开发一款既适合 iPhone 又适合 iPad 的 APP 。但是,如果公司没有对 iPad 设计专门的界面、交互,还是要尽量不对 iPad 进行适配。如果对 iPad 进行适配,好处如下:在 iPad 上可以直接搜索下载相应的 APP,界面全屏显示。缺点如下:开发任务增加。itunesconnect 后台资料增加。不对平台区分,界面很丑。想要再单独...

2019-04-12 20:02:33 3167 1

原创 终于找到淘口令的坑了

由于公司业务用到淘口令,前段时间又遇到一个奇葩的问题,同一个淘口令,在 iOS 版淘宝上识别不了,在 android 版淘宝上正常识别。最开始定义为淘宝 bug,后续经过大量的用户反馈,不得不去逆向淘宝查看淘口令的具体判断。逆向过程持续了 5 天,最终查找到原因。淘口令对应的链接带有空格,也就是 activityId = 这里我们的新程序员添加了空格,而淘宝通过链接地址构造 NSURL 失败。...

2019-03-21 17:40:51 10486 3

原创 苹果 app 审核的坑(二)

最近审核真是波折不断,首先因为 app 中含有抽奖活动被拒了,解决方案中包含了解决方法:将 app 中的抽奖活动明显标明与苹果公司无关。对 app 进行重新评级,最终为 17+。然后,按照说明修改完之后重新提交审核了。没曾想,又被拒了,原因如下:个人开发者账号不能够含有类似赌博、模拟赌博的活动,app 等级不能是 17+。这里,显然前后两次审核人员不是同一个,为了解决问题,只能将活动...

2019-03-17 12:26:31 386

原创 苹果 app 审核的坑(一)

关于 4. 2 Design: Minimum Functionality 审核被拒的应该很常见,但是我遇到的这种情况还是第一次。我们 app 已经上线了两天,今天收到了被拒信息:4. 2 Design: Minimum FunctionalityGuideline 4.2.3 - Design - Minimum FunctionalityWe were required to i...

2019-03-17 12:24:56 1268

原创 iOS app 耗电量快,看看 CPU 的使用率

前段时间一直有个别用户反馈 app 耗电量很快,手机发烫。问了下设备信息,判断不应该是设备过时的原因,自己手头测试也没有发现什么问题。直到今天,亲眼看到 app 界面反应特别卡顿,而且手机发烫确实很严重。最后经过排查,发现是跑马灯导致的。跑马灯使用 UIView 动画实现的,由于一直循环,导致控件没有释放,动画一直持续,最后 CPU 占用过多,手机耗电巨大。下面根据测试用例说明下这个问题。测...

2019-03-11 16:50:23 1172

原创 UILayoutPriority 导致的崩溃

日常开发中,大家可能会通过修改约束的 priority 来到达布局的目的。但是,如果使用不当,便会遇到崩溃问题。首先,看下说明文档如下:/* If a constraint's priority level is less than UILayoutPriorityRequired, then it is optional. Higher priority constraints are m...

2019-02-01 14:09:30 1123

原创 RACCommand 在 Tests 文件中的正确使用

虽说使用 RAC 有了一段时间,但是今天发现了一个莫名其妙的问题。当我的 viewmodel 中含有 RACCommand 的对象时,在 tests 文件中进行测试发现会崩溃,而且这个崩溃不能让人理解。后来发现是文件关联的 target 不正确导致的。感兴趣的可以在这里下载代码。首先看下我的测试代码如图所示:这里有三个 ViewModel ,关联的 target 是不一样的。他们的关联关系...

2019-01-24 15:16:49 145

原创 记一次 UITableView 的奇葩使用

平时开发中,一般涉及到内容比较多的,都会使用列表(UITableView/UICollectionView)来实现。前几天遇到一个需求,做一个筛选界面,但是条目只有两个,算是非常简单的 UI 了。但是,我还是选择了使用 UITableView 来实现,因为未免以后会增加更多的条目,以后就可以方便扩展了。其实,到这里,并没有什么奇葩可言,一切还算正常。重点是接下来对 UITableView 的使用...

2019-01-22 11:54:40 177

原创 iOS SDK 中的 Method Swizzling 导致的无限循环

最近在集成一个第三方 SDK 的过程中,发现了一个知识点。首先说下问题的现象。该 SDK 在其 demo 中运行正常,但是在我的项目中启动就崩溃,真机上运行的错误信息是 could not execute support code to read Objective-C class data in the process. at real iPhone device。模拟器上不会崩溃,app 会...

2019-01-04 17:45:05 1185 1

原创 MJExtension中你可能不知道的一些点

MJExtension 应该是经常用到的开源库,其解析功能的确很强大。当然,这个在面试中也可能会问到,今天就说下关于这个库的三点不常见的知识。关联对象:类关联对象和对象关联对象。缓存kNilOptions对象关联对象还是比较常用的,不管是第三方还是自己写代码,一般在分类中需要全局存储某个字段,通常会使用对象关联属性,这个时候该字段的生命周期就会延长,以便进行后续操作。所以,这个时候该...

2018-12-17 18:22:27 614

原创 iOS中那些个价格数据操作(二)

上一篇 刚把跟价格有关的数据运算做好,今天新版本上线就遇到新的问题,只好把这个情况记录一下,方便别人以后不要再踩这个坑了。使用 NSNumberFormatter 处理价格没有什么问题,但是如果你拿到转换的字符串再进行 floatValue 操作,就可能出现问题了。看代码:- (void)test1{ CGFloat f = 1999.21; NSNumberFo...

2018-12-15 19:51:51 192

原创 iOS中那些个价格数据操作

做过电商项目的同学应该都能体会到价格计算的心塞,四舍五入、向下取整、向上取整,保留1位、保留2位、计算结果小数位有0抹去、计算偏差等等,今天就来总结下这些个东西的应对之法。先说前提,主要针对正数,负数可能不适用。再说结论:.f/.1f/.2f 等等,并不是四舍五入,而是五舍六入。向上取整、向下取整有专门的方法。保留几位,使用NSNumberFormatter,结果小数部分多余的零会自动...

2018-12-04 15:48:36 558 1

原创 这些年对tableview的cell重用的误解

不管是刚开始学,还是现在网上一些资料,都讲明了 UITableView 重用 cell 的原理,以及好处。但是,有的地方没有细讲,导致了我(可能也有你)对重用造成了误解。先说下我的误解:我之前认为 cell 的重用,就是对内存进行了优化,不用创建很多个 cell,造成内存消耗太多。但是,最近我发现这种理解是错误的,而且是大错特错。下面先说明下结论:cell 重用会造成更多的内存消耗。当然了,...

2018-12-02 16:04:25 362

原创 再也不用被设计师追着改了

做完新的需求,最不开心的就是被设计师追着调整界面,都是一些像素级别的问题。而且,一般这种问题都会出现在文字方面。当我们使用 UILabel 渲染文字的时候,由于控件上下会留有间隙,最终效果就会跟设计图有偏差。那么,今天就来解决这个令人头疼的问题。设计图上文字部分必须含有中文(找设计师沟通了)。设置 UILabel 高度与字体大小一样。这样就可以解决偏差问题了。如果想要知道原因,就继续向下...

2018-11-30 19:56:29 153

原创 iOS启动图显示不全

最近更换了启动图片,同时启动方式也从 Assets.xcassets 改为了 stroyboard 方式。当然也遇到了问题。更换之后,启动图不显示(黑屏),卸载重装也不行。解决方法:将启动图片放到文件夹下,不要放到 Assets.xcassets 中。更换之后,启动图还是原来的。解决方法:更换启动图片的名字。更换之后,出现了新的启动图,但是有时候 app 启动的时候,启动图片...

2018-11-30 15:21:59 1169

原创 setContentOffset失效

最近在给 UITableView 添加下拉刷新的时候,发现 setContentOffset:animated:在 iOS11 iOS12 失效。不会使用动画,而是很突兀的恢复了偏移。最后发现了解决办法:_tableView.estimatedRowHeight = 0;// default is UITableViewAutomaticDimension, set to 0 to disabl...

2018-11-29 15:01:29 3312

原创 UIWebView流畅度

最近在使用别的 app 过程中,发现 web 页面滑动非常流畅,比起自己写的好多了。而且平时开发,感觉 android 的 web 页也很流畅,所以就研究了一波,发现 UIScrollView 有个属性 decelerationRate,不管是 UIWebView 还是 WKWebView,只要设置其 scrollView 的 decelerationRate 属性为 UIScrollViewDe...

2018-11-28 18:53:39 220

原创 抓取苹果已添加的udid

最近需要统计苹果开发者平台上已经添加的设备udid,打开看了一下,已经有 96 条,如果要手动复制粘贴,很麻烦。作为程序员,不可能这样干的。所以,就用了之前学到的爬虫知识,解析出了这些信息,并转为字典保存到了本地。代码如下:from pyquery import PyQuery as pqimport jsondoc = pq(filename='Devices - Apple Devel...

2018-11-17 12:19:10 639

原创 RACSubscriber在订阅中的生命周期

这一篇分析过 RACScriber 的生命周期,今天发现了一个新的问题,重新分析下在耗时操作中 RACScriber 的声明周期。下面的完整测试用例在这里。先看下正常情况信号订阅的例子:- (void)test1{ RACSignal *signal = [RACSignal createSignal:^RACDisposable *(id<RACSubscriber>...

2018-11-15 09:23:27 374

原创 第三方的一些坑

说起第三方,确实是个好东西,有专业的人造的轮子,使用起来很方便,也不需要怎么维护,唯一需要的也就是跟着他们不断升级。但是,虽然他们开发比较专业,测试也比较完善,但是总免不了 bug。尤其像那些不能够看源码的 SDK ,遇到问题根本没有办法自己调试,只能找他们反馈问题。而且遇到好的服务商,还比较顺畅,一旦遇到差的,只能通过邮件,沟通效率也比较低。所以,面对第三方,我们还是要慎重,慎重,再慎重。开发...

2018-11-09 15:10:05 159

原创 一个无厘头的bug

最近 app 更新真是 bug 不停呀。前面有 Xcode 10 打 AppStore 渠道包导致部分用户闪退,后面又出现很小概率个人中心闪退。今天就着重记录下个人中心闪退这个无厘头的 bug。首先,介绍下闪退现象。新版个人中心有部分区域显示的是老版本的界面,而且点击个人中心的任何一个地方都会闪退。当然,既然有闪退,肯定会有闪退日志的,查看闪退日志,显示的是数组第一个元素为 nil。根据崩溃...

2018-10-31 17:21:43 206

原创 Xcode 10 使用的心塞之路

说心塞之路,一点也不为过,这两天体会到了类似服务端开发的压力。以下为事件的始末。自从苹果 9 月发布会之后,Xcode 10 陆续开始了推送,为了一瞻苹果暗黑模式,我在 十一 期间也更新了最新系统,安装了Xcode 10,而且使用没有明显的bug,暗黑模式也是挺装逼的。十一 之后,开始了我们 app 3.5.7 版本的提交审核,准确来说是 10.9 。但是直到两周也没有审核,一直维持着正在等待...

2018-10-27 18:12:30 970

原创 RACCommand

前面写的RAC都是与获取数据、数据绑定相关的。如果遇到事件的处理,是没法应用的。而RACCommand就是一个用于处理事件的类。首先,还是先查看.h文件。/// The domain for errors originating within `RACCommand`.extern NSString * const RACCommandErrorDomain;定义一个域值,代表由RACC...

2018-10-23 18:51:49 712

原创 使用 ShareSDK 分享遇到的一些坑

通常情况下,app活动分享一般都是采用两种分享样式:图片分享链接分享图片分享一般不会出现问题,直接设置分享类型为图片类型就好了。但是链接分享,每次都出现问题。问题如下:只分享出去了文本。只分享出去了图片。分享失败。其实,遇到这么多问题,主要还是我自己项目使用分享类型不精确导致的。我一般使用的是 Auto 类型。所以,当任何一个条件不符合,就达不到分享链接形式的目的。如果...

2018-10-19 21:51:50 1951

原创 导航控制器添加子控制器,你遇到问题了吗?

iOS中提供了经典弹框供开发者使用,但是每个公司为了展现出自身的优势,会制作各种酷(sha)炫(diao)的弹框,网上也有其他各种各样的实现。当然,也有使用控制器来实现的方案。下面说下使用此方案遇到的问题。使用控制器实现的话,就会有个操作,将控制器当做子控制器添加到父控制器上。如果父控制器是个导航控制器,可能就会遇到弹框显示无法退出的情况。具体步骤如下:父控制器为导航控制器,并且导航控制器已...

2018-10-10 15:00:33 335

原创 使用for循环遍历字符串时循环变量类型的坑

通常情况下,使用for循环可以通过递增,也可以通过递减,使用递减遍历代码如下:- (void)testFor{ NSString *string = @"信不信由你"; for (int i = string.length - 1; i >= 0; i--) { NSLog(@"%c -- %d", [string characterAtInde...

2018-10-10 13:05:48 3650

donotChangeAppIcon.png

列举一些验证 APP 图标改变下载的 APP 列表,包含5个天气 APP,4个日历 APP。这些都可以在 AppStore 下载到的。

2020-04-02

国家列表+国家代码

各个国家的名字。

2018-09-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除