开发遇到总结
本专栏是对在平时开发工作中,遇到的一些问题和解决方案的总结。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
Pika_HoneyMoon
iOS开发工程师,正在学习与进步中。
展开
-
iOS UITableView上拉加载解决偶然跳动的Bug
iOS UITableView上拉加载偶发刷新列表跳动的Bug解决方法原创 2023-08-29 16:23:45 · 1074 阅读 · 0 评论 -
一次性处理全局键盘好用工具IQKeyboardManager
iOS项目中统一处理键盘遮挡、键盘回收释放等问题的解决方案,使用IQKeyboardManager小工具,希望能有所帮助。原创 2023-07-13 14:48:06 · 2590 阅读 · 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 · 1274 阅读 · 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 · 288 阅读 · 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 · 808 阅读 · 0 评论 -
iOS第三方管理工具Carthage的安装和使用
iOS目前主流的第三方管理工具是Cocoapods和Carthage,之前项目都是使用Cocoapods,虽然使用方法简单方便,但是也具有一定的弊端,侵入型太强,直接修改了我们工程的结构和配置,整个工程的文件结构被弄的很凌乱。Carthage作为一个轻量级的工具,他的好处就是不会对你的工程结构做任何的修改,没有侵入性。 Carthage的工作原理是从Cartfile描述文件中读取第三方框架的网络地址并下载,然后通过Xcode编译成framework动态库,我们使用的时候直接导入动态库就好了...原创 2020-06-29 11:17:42 · 440 阅读 · 0 评论 -
2020苹果WWDC大会要点总结
6 月 23 日北京时间凌晨1点,苹果2020WWDC在加州总部的乔布斯剧院举行,这次的WWDC以线上的方式举行。此次 WWDC 将会有Arm架构的苹果芯片、iOS版本的提升以及头戴式耳机AirPodsStudio的发布。1.新版本iOS14在主屏幕、小组件、短信功能、地图等方面作出更新和完善。据苹果介绍,为了解决用户下载应用数量的增加,苹果推出App Library,能够让用户更加容易地控制页面与分类主屏幕应用,让管理应用不再繁琐。另外,用户可在主屏的小区域上叠加多个小工具,甚至可...原创 2020-06-23 16:19:26 · 764 阅读 · 0 评论 -
Xcode图片素材Slicing处理(包括缩放和延伸)
一、需求背景在项目开发中,在UI切图不全的情况下,我们可以通过放大缩小图片某个区域适配各种机型防止背景图片变形。iOS可以通过UIImage的方法resizableImageWithCapInsets切片设置图片的可拉伸区域,也可以通过slicing(基于OS7以上的 并且用Media.xcassets管理图片)可视化的制定图片的可扩展和不可变区域 。(而我所遇到的问题是, 设置聊天对话框, 会随着聊天文字内容而横向和纵向的变化)二.首先讲iOS中的切片缩放iOS的图片Slicing,同等于Andr原创 2020-05-22 17:19:00 · 815 阅读 · 0 评论 -
ScrollView不滚动的原因分析和解决办法
iOS搭建界面时经常用到UIScrollView,但是经常遇到ScrollView不能滚动的问题。 按照一般的解决思路去寻找原因:1.检测ScrollView的scrollenabled是否为YES;2.检测ScrollView的userInteractionEnabled是否为YES;3.检测代码中有没有设置ScrollView的ContentSize,并且比ScrollV...原创 2020-01-19 15:28:13 · 5318 阅读 · 0 评论 -
iOS开发SDK需要注意的几点总结
1. 修改类别文件名及类别方法。开发SDK时通常会用到比较多的第三方的类别方法, 这样的话, 开发者在使用你的SDK时, 因为他可能也会加一些第三方的开源库, 比如都使用了NSString的md5类别文件。 由于这两个文件都是从网上下载来下的, 所以文件名是一样的。 这样在编译时就会报错。 然后就想到要去修改这个类别文件名, 等修改类别文件名后。 发现类别中的方法名是一样的, 而ios在调用两...原创 2019-12-27 16:01:17 · 326 阅读 · 0 评论 -
iOS13新增SceneDelegate文件适配
xcode11创建项目新增SceneDelegate文件,AppDelegate文件结构也发生变化,在AppDelegate.h文件中没有了window属性,而是在sceneDelegate.h中,可见AppDelegate不管理window而是交给SceneDelegate。由于这些是ios13新增,所以SceneDelegate在ios13以下的系统是不支持。所以xcode11创建的项目如要做...原创 2019-11-27 13:10:32 · 701 阅读 · 0 评论 -
iOS13适配StatusBar
上篇文章总结了几个iOS13的新特性,今天来说说今天上午适配项目的时候,遇到的第一个问题,StatusBar的适配遭遇了crash。现在说说如何解决。获取StatusBar项目中通过StatusBar来获取手机当前状态,但是在iOS 13中便获取不到了,调试了一下发现是UIApplication无法获取到statusBar。 UIApplication *app = [UIAp...原创 2019-11-27 13:03:00 · 1884 阅读 · 0 评论 -
Mac下修改文件的md5值
苹果机审是马甲包混淆被打回来的一大障碍,机审一般是比较文件的md5是否一致,所以我们单单修改文件的名称是不够的,需要我们批量修改工程中图片等文件资源的md5值。下面总结一下如何用终端修改文件的md5值。1、查看 md5 值打开 Terminal (终端),输入「md5」,空格,文件路径,最终命令类似于$ md5 文件路径 例:$ md5 /Users/wangyongzhi...原创 2019-06-18 10:16:54 · 2152 阅读 · 0 评论 -
ios12后获取iOS设备WiFi名字和mac地址
苹果提供了NetworkExtension框架让开发者实现VPN以及WiFi热点相应的功能,虽然iOS9系统出来之后,这个框架的很多功能被苹果屏蔽了,需要申请权限才能用,但是本篇简单的获取WiFi名字和mac地址信息的方法还是可以用的。获取WiFi相关信息的时候需要引入一下头文件#import <SystemConfiguration/CaptiveNetwork.h>#im...原创 2019-06-17 12:02:25 · 2567 阅读 · 0 评论 -
ReactiveCocoa 源码架构一览
ReactiveCocoa 是一个非常复杂的框架,在正式开始介绍它的核心组件前,我们先来看看它的类图,以便从宏观上了解它的层次结构:1451960390500209.png从上面的类图中,我们可以看出,ReactiveCocoa 主要由以下四大核心组件构成:信号源:RACStream 及其子类; 订阅者:RACSubscriber 的实现类及其子类; 调度器:RACSchedu...原创 2019-06-17 11:47:49 · 352 阅读 · 1 评论 -
分析ReactiveCocoa 中 RACCommand底层实现
今天总结一下非常好用的ReactiveCocoa框架。而且结合MVVM非常实用和方便。在使用ReactiveCocoa 过程中,除去RACSignal和RACSubject这些信号类以外,有些时候我们可能还需要封装一些固定的操作集合。这些操作集合都是固定的,每次只要一触发就会执行事先定义好的一个过程。在iOS开发过程中,按钮的点击事件就可能有这种需求。那么RACCommand就可以实现这种需求...原创 2019-06-17 11:40:41 · 351 阅读 · 0 评论 -
iOS Framework制作流程
由于公司需求,需要制作自己的登录界面SDK和根据需求更换项目路径的SDK,所以研究了一下静态Framework的制作步骤,总结如下:(另外.a的制作其实与.framework的制作过程类似,可自行去研究和尝试) 新建工程选择iOS —> Cocoa Touch Framework 进入创建好的工程删除掉自带的工程同名头文件 ...原创 2019-06-11 14:14:39 · 338 阅读 · 0 评论 -
iOS软件包ipa重签名
ipa是iOS系统app安装包,如果我们想对App Store上的软件进行修改然后重新安装到手机上、或者对已有的APP进行企业分发而不更改包名、或者手机上安装多个相同的APP等都需要进行重签名。1.准备一个mobileprovision描述文件,可以从开发者账号下载或者从Xcode中导出。将准备好的xxx.mobileprovision文件重名为embedded.mobileprovisio...原创 2019-06-04 14:31:25 · 562 阅读 · 0 评论 -
iOS编程代码规范
一. 核心原则原则一:代码应该简洁易懂,逻辑清晰因为软件是需要人来维护的。这个人在未来很可能不是你。所以首先是为人编写程序,其次才是计算机:原则二:面向变化编程,而不是面向需求编程。需求是暂时的,只有变化才是永恒的。本次迭代不能仅仅为了当前的需求,写出扩展性强,易修改的程序才是负责任的做法,对自己负责,对公司负责。原则三:先保证程序的正确性,防止过度工程过度工程(over...原创 2019-06-04 10:32:24 · 353 阅读 · 0 评论 -
iOS设置启动页并适配机型
项目启动页有很多设置方法,具体得看各自的项目需求。但是针对最普遍的加载一张图片为启动页的需求,适配目前市面上广泛使用的iPhone SE、iPhone 8系列、iPhone 8 Plus系列、iPhone X尺寸,为大家介绍最简便的一种方法:一、新建工程项目,有一个默认的(Assets.xcassets),的资源文件,然后鼠标右键效果如下,选择(New IOS Launch Image)注...原创 2018-07-13 10:39:33 · 4199 阅读 · 2 评论 -
iOS应用打开pdf、doc、excel文件等
用WebView就可以完成。只描述一种,加载本地文件的代码:#import "ViewController.h"@interface ViewController ()@property (weak, nonatomic) IBOutlet UIWebView *webView;@end@implementation ViewController- (void)viewDi...原创 2018-09-29 09:55:37 · 2801 阅读 · 1 评论 -
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 · 740 阅读 · 0 评论 -
Xcode10:library not found for -lstdc++.6.0.9未升级SDK临时解决
附上 lstdc++.6.0.9 链接 https://github.com/386699981/libstdc-6.0.9百度云链接:stdc++.6.0.9从链接下载libstdc++-6.0.9的库,手动添加到真机和模拟器的lib文件夹里。真机运行库在终端输入以下命令打开Xcode的lib库目录(此目录位安装的默认目录)open /Applications/Xcode....原创 2018-10-17 10:56:17 · 691 阅读 · 0 评论 -
iOS开发之NS_ASSUME_NONNULL_BEGIN和 NS_ASSUME_NONNULL_END
最近使用新更新的Xcode10.0新建类时,发现它自动为我们在.h文件里添加了NS_ASSUME_NONNULL_BEGIN和 NS_ASSUME_NONNULL_END。如下示例:#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface WechatLoginBindPhoneController : UI...原创 2018-11-06 10:38:47 · 938 阅读 · 0 评论 -
iOS实现微信第三方登录
一、接入微信第三方登录准备工作。移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统。在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret,申请微信登录且通过审核后,可开始接入流程。(注意)1、下载iOS微信SDK。(自己去微信开放平台下载,并集成进项目,若之前项目...原创 2018-11-06 10:54:45 · 926 阅读 · 0 评论 -
NSArray与NSMutableArray应该使用copy还是strong?
先说标题的正确答案:@property (nonatomic,copy) NSArray *immutableArray;@property (nonatomic,strong) NSMutableArray *mutableArray;其他集合:NSArray,NSDictionary,NSSet -> copyNSMutableArray,NSMutableDi...原创 2018-11-06 14:16:41 · 1925 阅读 · 0 评论 -
iOS接入支付宝支付SDK遇到编译错误
接入AliPay后,编译报错:Undefined symbols for architecture arm64: "_OBJC_CLASS_$_类名", referenced from前不久刚在一个项目里接入过支付宝支付,就是把AliPaySDK.bundle和AliPaySDK.framework两个导入工程,然后再添加相应的依赖库,没有出现任何报错,但今天再次用同样的方法导入支付宝时,居然...原创 2018-11-13 09:47:58 · 1101 阅读 · 0 评论 -
WKWebView代理方法解析
今天看一下WKWebView的两个协议:WKNavigationDelegate 和 WKUIDelegate。一、WKNavigationDelegate#pragma mark - WKWebView NavigationDelegate//WKNavigationDelegate- (void)webView:(WKWebView *)webView decidePolicy...原创 2018-11-16 10:25:55 · 1166 阅读 · 0 评论 -
iOS12.1之后语音播报问题解决方案总结
目前公司的项目是一个类似于送快递的项目,所以免不了有类似于饿了么、美团、支付宝收钱吧这种,"您有新的订单","您的收益到账啦"这种类似的推送,这种推送还设计语音播报出来的功能。产品要求APP在前台、后台、程序杀死后都要收到推送消息和语音播报,之前也早早的做了这个功能,就是用的大家常用的方法NotificationService。但是项目升级了iOS12.1后,语音不播报了。 最开...原创 2018-12-24 15:56:19 · 3752 阅读 · 4 评论 -
iOS后台实现推送并语音播报,程序杀死仍获得推送并语音播报
其实网上这种Notification Service Extension的代码很多,大家搜搜就能顺利写出来,下面我只是单纯记录一下,以便以后再次用到:用Notification Service Extension实现APP在后台能获得推送通知并语音播报,以及程序杀死仍获得推送并语音播报的方法:(当然需要解决iOS12.1的语音播报问题,还要参考我上一篇文章,这篇文章其实是上篇文章iOS12.1...原创 2018-12-24 16:07:00 · 1539 阅读 · 0 评论 -
App之间的数据共享App Group
在实际的开发中,我们也许会有这种需求:公司的旗下有两个App,当客户已经登录一个App A的情况下,再登录另一个App B时,B不再需要繁琐的登录过程就可以直接使用A已经登录的信息。但是iOS系统下有这么一个安全机制:每个应用都有自己对应的沙盒,每个沙盒之间都是相互独立的,互不能访问(没有越狱的情况下)。这种情况,我们应该怎么处理呢?(当然,我是由通知扩展和主程序BundleID要求不一样,所以...原创 2018-12-24 16:22:41 · 2068 阅读 · 0 评论 -
App Delegate的相关总结
1.告诉代理,启动基本完成程序准备开始运行。程序首次已经完成启动时执行,若直接启动,launchOptions中没有数据;否则,launchOptions将包含对应方式的内容。- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions...原创 2019-01-25 11:41:33 · 228 阅读 · 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 · 3656 阅读 · 0 评论 -
iOS拆包准备获取ipa包及资源文件
要获得线上APP的ipa文件,现在有以下几种方案1.通过PP助手下载安装到手机的应用2.通过iTools助手下载安装到手机的应用3.通过Apple Configurator 2(Mac商店)获取前两种方案网上的教程很多,这里只介绍第三种方案首先 去Mac上的App Store下载Apple Configurator 2。然后把iphone连接上Mac,点击Apple Con...原创 2019-05-27 13:45:29 · 4126 阅读 · 0 评论 -
终端判断Framewrok是动态库还是静态库
1.打开终端2.cd到目标Framework文件夹3.使用file命令file xxxx(xxxx为Framework文件夹中的执行二进制文件)你会看到以下信息动态库输出信息:XXXXSDK: Mach-O universal binary with 4 architectures: [i386:Mach-O dynamically linked shared librar...原创 2019-06-05 16:53:35 · 859 阅读 · 0 评论 -
iOS界面回到主页刷新列表
在好多APP中,首页中心是几个列表,然而每次从其他界面回到主页,都最好自动刷新一下列表,那么问题来了,如何自动刷新呢?一,可以在ViewWillAppear中调用刷新数据方法;二,用Block或者代理方法调用刷新数据;三,添加通知。 如我的APP是抽屉式框架,中心页是三四个列表。我用的是通知方法。当然这种方法同样适用其他框架,如常用的标签式框架等。 举例说明:A界面点击按钮后,...原创 2018-03-29 15:36:53 · 2046 阅读 · 0 评论