iOS研发专栏
本栏目会总结和发布开发项目中遇到的一些问题和技术解决方案,欢迎大家一起交流进步。
Pika_HoneyMoon
iOS开发工程师,正在学习与进步中。
展开
-
iOS UITableView上拉加载解决偶然跳动的Bug
iOS UITableView上拉加载偶发刷新列表跳动的Bug解决方法原创 2023-08-29 16:23:45 · 1122 阅读 · 0 评论 -
一次性处理全局键盘好用工具IQKeyboardManager
iOS项目中统一处理键盘遮挡、键盘回收释放等问题的解决方案,使用IQKeyboardManager小工具,希望能有所帮助。原创 2023-07-13 14:48:06 · 2712 阅读 · 0 评论 -
M1芯片的mac下的Xcode12以上版本编译报错 this target. for architecture arm64等问题解决方案
最近换了 mac M1芯片 开发,xcode12在运行旧项目报错 的问题xxxx building for iOS Simulator, but linking in object file built for iOS, xxxxx for architecture arm64上谷歌、百度翻个各种答案,修改 编译结构体、修改pods配置都不行。自己瞎倒腾给解决了....非常简单解决方案:1.打开访达,选择应用程序,右键打开xcode简介选择打开ressta 即可运..原创 2021-05-07 17:58:40 · 1433 阅读 · 2 评论 -
NSTimer使用时注意项总结
一、NSTimer使用方法:const NSTimeInterval TimeInterval = 1.0;@interface UIViewController ()// 定义属性timer@property (nonatomic, strong) NSTimer *timer;@end/** * timer 初始化 * repeats:参数表示是否重复执行(YES表示每TimeInterval秒运行一次function方法。NO表示不重复只调用 一次,timer运行一次就会自动停原创 2020-11-11 22:15:43 · 306 阅读 · 0 评论 -
Carthage与CocoaPods的区别和使用步骤
Carthage是什么?主页:Carthage:https://github.com/Carthage/Carthage 目标:Carthage旨在使用最简单的方式来管理Cocoa等第三方框架。 原理:自动将第三方框架编译为动态库(Dynamic framework)。 优点:Carthage为用户管理第三方框架和依赖,但不会自动修改项目文件或构建设置,开发者可以完全控制项目结构和设置。 缺点:只支持iOS 8.0+,不能用来开发iOS 8.0以前的项目。Carthage与CocoaPods的原创 2020-07-10 14:53:52 · 859 阅读 · 0 评论 -
iOS第三方管理工具Carthage的安装和使用
iOS目前主流的第三方管理工具是Cocoapods和Carthage,之前项目都是使用Cocoapods,虽然使用方法简单方便,但是也具有一定的弊端,侵入型太强,直接修改了我们工程的结构和配置,整个工程的文件结构被弄的很凌乱。Carthage作为一个轻量级的工具,他的好处就是不会对你的工程结构做任何的修改,没有侵入性。 Carthage的工作原理是从Cartfile描述文件中读取第三方框架的网络地址并下载,然后通过Xcode编译成framework动态库,我们使用的时候直接导入动态库就好了...原创 2020-06-29 11:17:42 · 505 阅读 · 0 评论 -
2020苹果WWDC大会要点总结
6 月 23 日北京时间凌晨1点,苹果2020WWDC在加州总部的乔布斯剧院举行,这次的WWDC以线上的方式举行。此次 WWDC 将会有Arm架构的苹果芯片、iOS版本的提升以及头戴式耳机AirPodsStudio的发布。1.新版本iOS14在主屏幕、小组件、短信功能、地图等方面作出更新和完善。据苹果介绍,为了解决用户下载应用数量的增加,苹果推出App Library,能够让用户更加容易地控制页面与分类主屏幕应用,让管理应用不再繁琐。另外,用户可在主屏的小区域上叠加多个小工具,甚至可...原创 2020-06-23 16:19:26 · 843 阅读 · 0 评论 -
ScrollView不滚动的原因分析和解决办法
iOS搭建界面时经常用到UIScrollView,但是经常遇到ScrollView不能滚动的问题。 按照一般的解决思路去寻找原因:1.检测ScrollView的scrollenabled是否为YES;2.检测ScrollView的userInteractionEnabled是否为YES;3.检测代码中有没有设置ScrollView的ContentSize,并且比ScrollV...原创 2020-01-19 15:28:13 · 5549 阅读 · 0 评论 -
开发者需要知道的iOS13新特性
一.Dark Mode首先说万金油适配方法,如果希望在iOS依旧保持原来的样子,就在plist文件增加key-value,如图1.)全局适配不设置背景颜色的视图,背景颜色会根据系统设置的模式改变iOS13中uiviewcontroller和uiview新增了overrideUserInterfaceStyle属性,通过设置这个属性可以改变vc或view本身及其子视图的模式(light...原创 2019-11-27 12:48:55 · 597 阅读 · 0 评论 -
iOS性能、内存分布与TaggedPointer
iOS中的五大内存区域iOS中的内存区域从低地址到高地址分别为 .text段(代码区)、.data段(已初始化的全局变量、静态变量)、.bss段(未初始化的全局变量、静态变量)、堆区、栈区。image.png保留段:用于给系统提供一些必要的空间;内核区:由系统使用;这里说明一点:栈区从上往下走,堆区会从下往上走,当两个相遇的时候,则会发生堆栈溢出。 // 一...原创 2019-06-17 14:34:44 · 609 阅读 · 0 评论 -
ios12后获取iOS设备WiFi名字和mac地址
苹果提供了NetworkExtension框架让开发者实现VPN以及WiFi热点相应的功能,虽然iOS9系统出来之后,这个框架的很多功能被苹果屏蔽了,需要申请权限才能用,但是本篇简单的获取WiFi名字和mac地址信息的方法还是可以用的。获取WiFi相关信息的时候需要引入一下头文件#import <SystemConfiguration/CaptiveNetwork.h>#im...原创 2019-06-17 12:02:25 · 2596 阅读 · 0 评论 -
ReactiveCocoa 源码架构一览
ReactiveCocoa 是一个非常复杂的框架,在正式开始介绍它的核心组件前,我们先来看看它的类图,以便从宏观上了解它的层次结构:1451960390500209.png从上面的类图中,我们可以看出,ReactiveCocoa 主要由以下四大核心组件构成:信号源:RACStream 及其子类; 订阅者:RACSubscriber 的实现类及其子类; 调度器:RACSchedu...原创 2019-06-17 11:47:49 · 3473 阅读 · 1 评论 -
分析ReactiveCocoa 中 RACCommand底层实现
今天总结一下非常好用的ReactiveCocoa框架。而且结合MVVM非常实用和方便。在使用ReactiveCocoa 过程中,除去RACSignal和RACSubject这些信号类以外,有些时候我们可能还需要封装一些固定的操作集合。这些操作集合都是固定的,每次只要一触发就会执行事先定义好的一个过程。在iOS开发过程中,按钮的点击事件就可能有这种需求。那么RACCommand就可以实现这种需求...原创 2019-06-17 11:40:41 · 384 阅读 · 0 评论 -
iPhone屏幕适配 新增iPhone XS iPhone XR iPhone XS Max
iPhone机型屏幕比较:由上图可见 iPhoneXs 的屏幕尺寸和去年的iPhoneX是一样的,所以今年不需要做特殊处理。主要处理下后面的两款新的尺寸机型:去年适配的iPhoneX 的分辨率:2436 * 1125 || pt: 812 * 375iPhoneXr的分辨率:1792 * 828 || pt: 896 * 414iPhoneXs 的分辨率: 2436 * 1125...原创 2018-10-15 10:23:23 · 801 阅读 · 0 评论 -
ios极光推送配置应用修改bundleID
极光推送iOS配置鉴权后,本质上BundleID是不允许修改的,但是若必须要修改,则需要给官网发送邮件(support@jpush.cn),清空原有iOSbundleID,然后再重新配置鉴权。关于清空 iOS BundleID 或 Android 包名的说明:根据说明,确认是否需要清空!此时清空 iOS 证书(或修改 Android 包名)将会影响到之前的所有用户收不到原创 2018-01-30 16:11:21 · 6477 阅读 · 0 评论 -
iOS Framework制作流程
由于公司需求,需要制作自己的登录界面SDK和根据需求更换项目路径的SDK,所以研究了一下静态Framework的制作步骤,总结如下:(另外.a的制作其实与.framework的制作过程类似,可自行去研究和尝试) 新建工程选择iOS —> Cocoa Touch Framework 进入创建好的工程删除掉自带的工程同名头文件 ...原创 2019-06-11 14:14:39 · 374 阅读 · 0 评论 -
WKWebview与JS交互的问题
首先向大家推荐一篇文章关于iOS与js交互知识点的总结,个人认为有助于大家记忆和理解,感谢作者的整理。https://github.com/Haley-Wong/JS_OC 关于OC与JS交互方法,我主要使用的是WKWebview,所以js调用oc方法并传值,oc调用js方法并传值,我使用的是MessageHandler。JS_OC_MessageHandler是利用WKWe...原创 2019-01-16 14:59:55 · 3696 阅读 · 0 评论 -
iOS后台实现推送并语音播报,程序杀死仍获得推送并语音播报
其实网上这种Notification Service Extension的代码很多,大家搜搜就能顺利写出来,下面我只是单纯记录一下,以便以后再次用到:用Notification Service Extension实现APP在后台能获得推送通知并语音播报,以及程序杀死仍获得推送并语音播报的方法:(当然需要解决iOS12.1的语音播报问题,还要参考我上一篇文章,这篇文章其实是上篇文章iOS12.1...原创 2018-12-24 16:07:00 · 1582 阅读 · 0 评论 -
iOS12.1之后语音播报问题解决方案总结
目前公司的项目是一个类似于送快递的项目,所以免不了有类似于饿了么、美团、支付宝收钱吧这种,"您有新的订单","您的收益到账啦"这种类似的推送,这种推送还设计语音播报出来的功能。产品要求APP在前台、后台、程序杀死后都要收到推送消息和语音播报,之前也早早的做了这个功能,就是用的大家常用的方法NotificationService。但是项目升级了iOS12.1后,语音不播报了。 最开...原创 2018-12-24 15:56:19 · 3855 阅读 · 4 评论 -
iOS设置启动页并适配机型
项目启动页有很多设置方法,具体得看各自的项目需求。但是针对最普遍的加载一张图片为启动页的需求,适配目前市面上广泛使用的iPhone SE、iPhone 8系列、iPhone 8 Plus系列、iPhone X尺寸,为大家介绍最简便的一种方法:一、新建工程项目,有一个默认的(Assets.xcassets),的资源文件,然后鼠标右键效果如下,选择(New IOS Launch Image)注...原创 2018-07-13 10:39:33 · 4245 阅读 · 2 评论