ios
文章平均质量分 53
郏国上
Object C, JavaScript, python高级研发工程师
展开
-
Objective-C 的应用程序在启动过程
在开发过程中,开发者应该遵循苹果的人机界面指南,确保应用程序的启动过程既符合用户的预期,也遵循良好的用户体验设计原则。在这个方法中,开发者通常会进行一些关键的初始化操作,如设置用户界面、配置应用程序的默认状态等。UIApplicationMain 会创建一个 UIApplication 实例,并设置一个 UIWindow 作为应用程序的主窗口。main 函数通常会调用 UIApplicationMain,这是 UIApplication 类的一个函数,用于设置应用程序的运行环境。原创 2024-05-14 09:19:14 · 505 阅读 · 0 评论 -
Object c事件链传递
Object c事件链传递原创 2024-05-13 15:35:59 · 432 阅读 · 0 评论 -
iOS16系统根据PHAsset判断是否在云上
iOS16系统根据PHAsset判断是否在云上。[[resourceArray.firstObject valueForKey:@"locallyAvailable"] boolValue];info根本没有对应的键值PHImageResultIsInCloudKey,所以获取到的都是NO。原创 2023-08-14 09:05:47 · 495 阅读 · 0 评论 -
如何识别手机是否有灵动岛(dynamic island)
如何识别手机是否有灵动岛(dynamic island)灵动岛是苹果2022年9月推出的iPhone 14 Pro、iPhone 14 Pro Max首次出现,操作系统最低是iOS16.0。带灵动岛的手机在竖屏时顶部工具栏大于等于51像素。原创 2023-08-08 14:14:09 · 3232 阅读 · 0 评论 -
使用序列化和反序列化函数archivedDataWithRootObject和unarchivedObjectOfClasses的使用和遇到问题及解决方案
为何archiveRootObject和unarchiveObjectWithFile正常,而archivedDataWithRootObject和unarchivedObjectOfClasses一直报错。解决方案:遵循NSSecureCoding协议,把所有序列化的对象加入对象集合,对象的所有成员变量序列化和反序列化原创 2023-07-22 20:23:33 · 2633 阅读 · 0 评论 -
苹果手机无法更新系统问题
有些苹果手机,打开设置->通用->软件更新显示iOS已是最新版本。然而其它人的手机已经有更新的版本可以更新。造成这个问题的原因有两个:第一个是:苹果不支持该设备更新了。如iPhone SE及更老的手机不支持升级到iOS10。具体查看苹果每次系统大版本更新时,苹果官网公布的支持设备。第二个原因是:手机的系统版本是测试版或公测版,已经安装过描述文件,前往手机设置-通用- VPN与设备管理(更老的手机是描述文件)中进行删除即可。原创 2022-11-04 15:14:17 · 5194 阅读 · 0 评论 -
iOS16系统手机设置开启开发者模式才能安装ipa包
在 iOS 16 以后的苹果系统对安全操作有更进一步的要求, 在安装 adhoc 类型的 ipa 包完毕后, 点击对应的 app 时, 用户会发现弹框提示。此时需要您打开 iOS 中新增的开发者模式。进入 "设置" -> "隐私与安全性" -> 下滑到最底部, 在"安全性"里找到 "开发者模式"。打开开发者模式开关。打开开关后,有可能会要求您重启 iPhone,请重启手机。重启后,有可能会确认您打开 开发者模式, 请选择确认打开 开发者模式。原创 2022-11-04 14:05:29 · 7794 阅读 · 0 评论 -
Errors were encountered while preparing your device for development. Please check the Devices
xcode连接手机调试报错误:Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.解决方案:重启手机就好了。同样当数据线没有问题,xcode连接手机经常断开连接也是通过重启手机可以解决。原创 2021-07-18 14:45:12 · 293 阅读 · 0 评论 -
如何导出iPhone手机中app共享文件夹的文件与闪退日志的收集
如何导出iPhone手机中app共享文件夹的文件。本文以app中记录的闪退文件日志例子。只能捕获非内存方面的闪退。闪退日志获取方法。1.手机连接苹果电脑;2.打开itunes音乐播放器;3.选中左侧的连接设备的手机;4.点击右上角的同步设置;5.在弹出的窗口点击位置下面的连接手机;6.点击右上角的文件;7.点击写文件的app(这里以闪退日志文件为例);8.鼠标点击crash文件不放拖动到电脑文件夹;9.把拷贝出的文件夹的文件发给开发就能定位闪退问题了。原创 2021-06-23 15:17:32 · 1385 阅读 · 0 评论 -
苹果恢复出厂设置报4013错误问题
手机通过电脑的ituns或爱思助手更新失败,需要恢复出厂设置,结果更新过程中报4013错误,排除连线等问题后确定是硬件问题,并且是手机主板错误。一般主板错误基本没有维修价值了,一个手机核心是主板和屏幕等,换主板真的和买二手手机没有区别,二手电子产品因为设备老化而更容易坏,所以买一个新的手机吧!当然你的手机在保修期内,还可以找苹果售后进行保修。主板主要是手机进水引起的电路板被腐蚀损坏居多。原创 2021-05-24 10:16:07 · 5543 阅读 · 0 评论 -
运行真机提示Errors were encountered while preparing your device for development. Please check the Devices
Xcode升级到12.4,联机运行iPhone12真机提示Errors were encountered while preparing your device for development. Please check the Devices and Simulators Window.重启手机再联机运行就可以了。原创 2021-05-20 15:38:36 · 1338 阅读 · 0 评论 -
iPad适配
iOS14支持的iPad有7种尺寸,都是近似4:3。切图全部都是2倍图。根据上下感应区分为三种情况:1.上下都没有;2.上面有下面没有;3.上下都有。底部感应区:0,20物理像素。顶部感应区:20物理像素,24,物理像素。所以顶部状态栏高度就是64物理像素和68物理像素。更具这上下状态栏分为下面两类(本文除了倍率外其它单位默认都是物理像素):顶部工具栏高度:64, 底部工具栏高度:49。原创 2020-11-03 12:03:40 · 1199 阅读 · 0 评论 -
Unable to boot device due to insufficient system resources
Unable to boot device due to insufficient system resources,模拟器起的太多,导致资源不够。解决方案关闭其它模拟器,只使用一个模拟器。原创 2020-10-31 17:51:10 · 1926 阅读 · 0 评论 -
iPhone 12 mini奇葩的倍率和高ppi是妥协的产物
iPhone 12 mini奇葩的倍率和高ppi是妥协的产物:兼顾成本,不降低屏幕清晰度,又不喧宾夺主的妥协产物。iPhone 12 mini 5.4英寸屏 官方给的逻辑像素分辨率是:2340 x 1080(又一个新的分辨率) ,476 ppi,模拟器获取到的物理像素:812 x 375,[UIScreen mainScreen].scale 倍率:3。可以看到它不是标准的3倍,而是这个奇怪的2.88倍率(近似3倍)。别看它不是3倍,但是却拥有比iPhone12及以前所有iPhone手机都高的像素密度pp原创 2020-10-29 12:01:11 · 7539 阅读 · 2 评论 -
高ppi的iPhone 12 mini的图标是非标准的3倍图
iPhone 12 mini 5.4英寸屏 官方给的像素分辨率是:2340/1080 ,476 ppi,模拟器获取到的物理像素:812/375,[UIScreen mainScreen].scale 倍率:3。可以看到它不是标准的3倍,不知道是模拟器错误,还是它就是这个奇怪的2.88倍率。其它的iphone 12版本的像素分辨率尺寸都是正常的。屏幕打印代码: NSLog(@"phoneType:%@, FULL_WIDTH:%f, FULL_HEIGHT:%f, [UIScreen mai原创 2020-10-23 16:47:28 · 1631 阅读 · 0 评论 -
iOS审核在ipv6网络下无法访问服务器的问题及解决方案
Guideline 1.5 - Safety - Developer InformationThe support URL specified in your app’s metadata, https://app. a123.com/h5/html/agreementa.html, does not properly navigate to the intended destination.Next StepsTo resolve this issue, please revise your app原创 2020-10-21 14:12:28 · 2859 阅读 · 0 评论 -
在viewWillAppear函数中禁止左滑,viewWillDisappear开启左滑动产生进入下一个页面来回滑动造成无法点击点击按钮问题
在viewWillAppear函数中禁止左滑,viewWillDisappear开启左滑动产生进入下一个页面来回滑动造成无法点击点击按钮问题。- (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; // 开启返回手势 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecogniz原创 2020-10-17 10:21:12 · 189 阅读 · 0 评论 -
iOS 14 UITableViewCell适配问题
iOS 14 UITableViewCell适配问题:采用:直接在表格上增加view和按钮会出现按钮不能点击的问题[self.contentView addSubview:self.bgView];,当在[self.contentView addSubview:self.bgView];增加就没有这样的问题。- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifi原创 2020-10-14 15:39:47 · 572 阅读 · 0 评论 -
MLeaksFinder内存泄漏检测无侵入性工具
MLeaksFinder 是WeRead团队开源的一款检测 iOS 内存泄漏的框架,其使用非常简单,只需将文件加入项目中,如果有内存泄漏,3秒后自动弹出 alert 来捕捉循环引用。使得可以在开发快速找到80%内存泄漏,而使用 Xcode Leak 工具更适合大范围的,全部的寻找泄漏点。通过阅读 MLeaksFinder 的介绍可以看出其具有以下几个特性1 无侵入性2 可以构建泄漏堆栈3 有白名单机制4 扩展性5 其他的一些特殊处理苹果app工程导入这个库就可以检查出内存泄漏。但是他原创 2020-08-17 10:36:03 · 461 阅读 · 0 评论 -
select 出错! errno:22(EINVAL)
errno = 0; 很多文章都抄来抄去,哔哔了半天手动清零errno,也没有说怎么清零errno错误。实际上就这一句话。若你不执行这一句话等个几个小时,系统才可能给你清零,可不是等几分钟。有时间一个最简单操作能难道英雄汉。实践是检验真理的唯一标准。原创 2020-08-17 10:29:52 · 3041 阅读 · 0 评论 -
点击UICollectionViewCell和UICollectionView空白处事件响应
有时候需要处理点击UICollectionView空白区域的事件,如果我们直接添加一个单击手势,就会发现,当点击UICollectionViewCell时,也是执行的单击手势的方法,而不是执行didSelectItemAtIndexPath;这时候可以通过手势代理方法解决,区分点击的是UICollectionView空白处,还是UICollectionViewCell。如下: UITapGestureRecognizer *tap = [[UITapGestureRecognizer all原创 2020-08-16 15:40:12 · 1515 阅读 · 0 评论 -
如何是实现上面左右两边有圆角,下面没有圆角
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGINtypedef NS_ENUM(NSUInteger, ERectangleCornerType){ ERectangleCornerTypeNoCorner = 0, //无圆角 ERectangleCornerTypeUpLeftRight = 1, //上部左右两个圆角 ERectangleCornerTypeDownLeftRight = 2,原创 2020-08-16 08:50:05 · 798 阅读 · 0 评论 -
如何实现画圆角
typedef NS_ENUM(NSUInteger, ESectorType){ ESectorTypeLeftUp = 0, //左上角90度扇形 ESectorTypeRightUp = 1, //右上角90度扇形 ESectorTypeLeftDown = 2, //左下角90度扇行 ESectorTypeRightDown = 3, //右下角90度扇形 ESectorTypeLeft = 4, //左半圆 ESect原创 2020-08-16 08:47:32 · 205 阅读 · 0 评论 -
如何实现图片多种颜色的文字混排并且带的背景颜色范围比文字图片范围大
由于标签是从开始显示的,文字的内容长度又不固定,图片的位置相对固定。想实现这样的效果需要计算出文字和图片的总长度,通过设置分段文字颜色的富文本来实现:-(void)setRank:(NSUInteger) rank{ _rank = rank; UIColor *strokeColor = BGColorHex(C69116); NSUInteger tempRank = rank/10+1; if(0 == rank) { tempRank =原创 2020-08-15 13:45:44 · 430 阅读 · 0 评论 -
如何实现带背景的镂空文字
系统的镂空文字中间是空的。普通文字又没有镶边。如何是文字一种颜色,文字又是一种颜色呢?实现方式是:在下面放一个普通文字标签,下面放一个系统镂空文字的标签。这两个标签位置完全相同。这样就能实现带背景的镂空文字了。最好是字体设置为粗体,字体越大,效果越好。上下顺序反一下,效果差的多。 [self addSubview:self.underDescribeTitleLabel]; [self addSubview:self.describeTitleLabel];-(void)se原创 2020-08-15 13:40:01 · 841 阅读 · 0 评论 -
block使用时不判空,当使用的block没有实现,会crash
block使用时不判空,当用block不被实现,会crash.- (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; self.backgroundColor = [UIColor whiteColor]; if (self) { for (int i = 0; i<3; i++) { ImageTitl原创 2020-08-15 09:09:07 · 339 阅读 · 0 评论 -
在做动画的控件不触发手势事件问题及解决方案
1.首先排除表格的父试图是否能交互(userInteractionEnabled);2.其次排除表格是否能交互(userInteractionEnabled);3.再次排查表格是否被其它透明可交互控件遮盖(Xcode强大的多视图立体分层显示View UI Herarchy)。4.是否表格超过父试图的范围(Xcode强大的多视图立体分层显示View UI Herarchy)。5.若以上都没有问题,那么很可能是你的表格的父试图设置了手势,手势的优先级高于表格点击事件。在容器页面(一个容器包含多个控制器页原创 2020-08-15 09:54:32 · 436 阅读 · 0 评论 -
表格行事件不被触发问题及解决方案
1.首先排除表格的父试图是否能交互(userInteractionEnabled);2.其次排除表格是否能交互(userInteractionEnabled);3.再次排查表格是否被其它透明可交互控件遮盖(Xcode强大的多视图立体分层显示View UI Herarchy)。4.是否表格超过父试图的范围(Xcode强大的多视图立体分层显示View UI Herarchy)。5.若以上都没有问题,那么很可能是你的表格的父试图设置了手势,手势的优先级高于表格点击事件。在容器页面(一个容器包含多个控制器页原创 2020-08-15 09:48:02 · 419 阅读 · 0 评论 -
Git 既落后(ahead)又超前 (behind)报错解决方案
Git 既落后(ahead)又超前 (behind)解决方案:在出现错误的分支执行命令:git push -f origin master注意:我遇到一个更奇怪的问题。我们的版本是从master拉到develop,从develop拉到jdev(个人分支)。直接推送个人分支合并正常,结果从develop拉版本时提示即超前又落后版本。在个人分支执行:git push -f origin master仍旧报错。没有办法删除develop,让后在个人分支拉master的代码,结果仍旧报这个错误,然后在个原创 2020-08-15 09:27:05 · 3132 阅读 · 4 评论 -
block内部使用_访问成员变量或者不设置弱应用使用self访问成员变量或成员函数会内存泄露。定时器NSTimer的回调函数也需要设置弱引用
block内部使用_访问成员变量或者不设置弱应用使用self访问成员变量或成员函数会内存泄露。定时器NSTimer的回调函数也需要设置弱引用。 @weakify(self); [[_inputTextFiled rac_signalForControlEvents:UIControlEventEditingChanged] subscribeNext:^(id x) { @strongify(self); if(isCommon原创 2020-08-15 09:12:31 · 196 阅读 · 0 评论 -
多页面悬停控件和如何获得多UIWindow的页面UIWindow
若你的app需要悬停一个控件在绝大多页面上,那么最后的解决方案是:把这个控件做成一个UIWindow,并且设置`_statusWindow.windowLevel = UIWindowLevelStatusBar + 1;`。-(UIWindow *)getLevelNormalWindwow{ NSArray *windows = [[UIApplication sharedApplication] windows]; for(UIWindow * tmpWin in windows)原创 2020-06-18 14:29:38 · 304 阅读 · 0 评论 -
对象数组序列化和反序列化
对象数组序列化需要对象实现NSCoding协议:PPKeyWordEntity.h#import <Foundation/Foundation.h>@interface PPKeyWordEntity : NSObject<NSCoding>@property (nonatomic, strong) NSString *keyword;- (instancetype)initWithKeyWord:(NSString *)keyWord;- (void)fillD原创 2020-06-05 11:05:39 · 737 阅读 · 0 评论 -
2020年iOS如何申请苹果公司开发者账号流程详细图文介绍
申请公司账号,别申请个人账号。以前有家公司就申请错了申请为个人账号了,结果只能显示个人开发者的名字。个人账号和公司账号费用现在一样了。企业账号已经不能申请了。申请网站地址参考文章申请苹果账号申请需要:1.邮箱,密码;2.支付宝或微信;3.注册人的手机号(交是每年缴费那个人的手机号,若出现苹果账户双重认证登录时,让开发者可以索要授权码)。注册需要的信息如下:由于苹果都启动了双重认真,所以要绑定一个开发手机,若提供appID,需要提供安.原创 2020-06-04 09:37:58 · 22595 阅读 · 5 评论 -
ios应用切换到后台再切换到前台,倒计时时间不准确问题的解决方案
有两种方案解决定时器前后台切换,倒计时停止显示不准确的问题。1.准确及时方案:创建NSTimer定时器,监控前后台通知和全局变量记录时间。2.切换到后台存在延迟刷新的问题解决方案:起线程记录时间。原创 2019-10-30 18:29:55 · 2467 阅读 · 0 评论 -
内存泄漏分类
内存泄漏分类内存分析分为三类:1, 内存上去后完全下不来,内存连续上涨不久就崩溃。2, 内存连续上涨,但是不崩溃。3, 内存偶而上涨,上涨后可能有部分内存会下降下来,并且内存上涨到一定程度后上涨幅度大幅度下降,可以称为疑似内存泄漏。 百度地图每次缩放后返回原来的页面内存大都增加0.1M以上app的所有页面都加原创 2015-03-05 11:30:43 · 1124 阅读 · 0 评论 -
单元测试,XCTestCase的使用与限制
XCTestCase作为Xcode集成的单元测试框架具有最贴近源代码,不影响源代码,系统独立不增加app的大小。几行代码就能完成一个单元测试,基本能达到条件语句覆盖。不用再等点击一系列按钮之后才能在屏幕上显示出来自己期望的东西,XCTestCase可以很容易的达到全场景测试。原创 2015-04-17 17:12:26 · 3237 阅读 · 0 评论 -
ios和安卓测试包发布网站http://fir.im的注册与常用功能
作为专业的ios和安卓测试包发布网站,注册超简单。支持输入网址直接下载和二维码扫描下载。功能类似TestFlight ,但又比它强大,支持游客访问密码,ios和安卓测试app都支持。模仿TestFlight ,又高于TestFlight 。原创 2015-05-06 09:48:20 · 68792 阅读 · 0 评论 -
实现手机号的分隔显示与编辑181 6836 8565
手机号都是一个文本框,通过控制文本框的显示内容就可以控制你输入手机号,支持移动到手机号中间增加和删除一个字符,支持粘贴的字符串长度和原长度不超过11位的粘贴操作。 它主要通过控制文本框代理来实现,这个是具体的控制接口调用。/***************************************************************************** 函数: (BO原创 2015-07-23 18:29:30 · 1431 阅读 · 0 评论 -
发送同步请求模块
同步加载有两种,一个是直接加载方式,另一个是发送标准同步请求后生成页面的方式。 直接方式的实现是requestWithURL:url,这种方案基本上已经很少有人用了。 发送标准同步请求的方式就是通过sendSynchronousRequest这个函数实现。 咱们的这个标准同步请求模块是通过代理来实现,就只贴代码,步贴使用方法了。 chttpSendSynchronousRequest.h文件原创 2015-07-24 17:41:10 · 1226 阅读 · 0 评论 -
网络事件触发自动登录
通过接收REACHABILITY_RECOVE_NOTIFICATION通知来获取网络状态,但是在弱网络下可能出现收不到通知的情况,iphone 4s有时候也出现收不到网络通知的情况,其它90%以上的情况都能收到网络通知。 登录时可以根据该通知来触发自动登录,防止没有收到网络通知就登录,导致登录失败,不能显示正常网络提示;也避免了起定时器等待一段时间在登录的不及时及耗电量问题(起线程很费电)。并且原创 2015-07-15 18:36:04 · 1433 阅读 · 0 评论