iOS
文章平均质量分 68
Bytesking
这个作者很懒,什么都没留下…
展开
-
iOS在手动kill进程时,再次调用了main函数的初始化流程问题排查
iOS 应用在手动kill进程时,却再次调用了main函数的初始化,进而调用了AppDelegate的相关方法,进一步调用了部分页面的生命周期;现象:app启动时没有调用部分接口,而是kill进程时调用了,再一些业务场景内是不能满足业务需求的排查原因如下:app的通知角标显示清除功能相关代码造成- (void)bk_clearBadge { // 注释iOS11及以上代码,在iOS11及以上的APP沙盒内查看启动次数 if (@available(iOS 11.0, *))原创 2021-04-23 16:54:14 · 388 阅读 · 0 评论 -
cocoapods-ybin二进制源码映射使用教程
一、背景 随着项目业务的不断迭代和新增,每个业务线负责不同的功能模块,组件化势必是需要进行的工作。业界内,无论是哪种组件化方案,目的是一样的,分离业务和功能。 组件化虽好,但是组件化只是将不同的业务分离或者不同的功能分离和分层,实际上还是在一个代码池里每次 build 需要进行编译、汇编、链接等过程。每次编译的占用的时间还是挺奢侈的,在编译速度上并没有提升。pod install 来回切换二进制和源码也更是一件可行不可取的开发模式。 cocoapods-ybin 解决二进制和源码之间的映射问题,原创 2020-09-05 01:02:07 · 735 阅读 · 0 评论 -
为什么说Objective-C是一门动态的语言?
什么叫动态静态静态、动态是相对的,这里动态语言指的是不需要在编译时确定所有的东西,在运行时还可以动态的添加变量、方法和类Objective-C 可以通过Runtime 这个运行时机制,在运行时动态的添加变量、方法、类等,所以说Objective-C 是一门动态的语言其他说法Objective-C 是C 的超集,在C 语言的基础上添加了面向对象特性,并且利用Runtime 这个运...原创 2018-02-26 09:51:59 · 4147 阅读 · 0 评论 -
MVC、MVVM和MVP的区别
MVCMVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式...原创 2018-02-26 10:00:01 · 292 阅读 · 0 评论 -
iOS中,@dynamic关键字和@synthesize关键字是用来做什么的?
@synthesize:如果不实现setter和getter方法,将按照编译器的规则自动生成setter和getter方法.@dynamic:直接或动态的执行setter和getter方法.通常自己实现setter和getter方法,我们基本上不会用到.@dynamic 关键词的场景,之前@dynamic只在NSManagedObject的子类中遇到过,因为NSManagedObjec...转载 2018-02-26 10:27:27 · 1278 阅读 · 0 评论 -
iOS多线程—线程间的通信
介绍线程间通信:在1个进程中,线程往往不是孤立存在的,多个线程之间需要经常进行通信线程间通信的体现1个线程传递数据给另1个线程在1个线程中执行完特定任务后,转到另1个线程继续执行任务线程间通信常用方法(void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL...原创 2018-02-26 14:00:49 · 557 阅读 · 0 评论 -
3种类型的block
根据isa指针,block一共有3种类型的block_NSConcreteGlobalBlock 全局静态_NSConcreteStackBlock 保存在栈中,出函数作用域就销毁_NSConcreteMallocBlock 保存在堆中,retainCount == 0销毁...原创 2018-02-26 14:01:13 · 815 阅读 · 0 评论 -
objc在向一个对象发送消息时,发生了什么?
objc在向一个对象发送消息时,runtime库会根据对象的isa指针找到该对象实际所属的类,然后在该类中的方法列表以及其父类方法列表中寻找方法运行,然后在发送消息的时候,objc_msgSend方法不会返回值,所谓的返回内容都是具体调用时执行的objc中向一个nil对象发送消息将会发生什么?如果向一个nil对象发送消息,首先在寻找对象的isa指针时就是0地址返回了,所以不会出现任何错误。...原创 2018-02-26 14:10:32 · 2865 阅读 · 0 评论 -
能否想编译后的类中添加实例变量,能否像运行时创建的类添加实例变量?
1.不能向编译后得到的类增加实例变量2.能向运行时创建的类中添加实例变量原因:a.编译后的类已经注册在runtime中,类结构体中的objc_ivar_list实例变量的链表和instance_size实例变量的内存大小已经确定,runtime会调用class_setvarlayout或class_setWeaklvarLayout来处理strong weak引用.所以不能向存在的...原创 2018-02-26 14:17:28 · 1257 阅读 · 0 评论 -
runtime如何实现weak变量的自动置nil?
runtime 对注册的类, 会进行布局,对于 weak 对象会放入一个 hash 表中。 用 weak 指向的对象内存地址作为 key,当此对象的引用计数为0的时候会 dealloc, 在这个 weak 表中搜索,找到所有以a为键的 weak 对象,从而设置为 nil。weak 修饰的指针默认值是 nil (在Objective-C中向nil发送消息是安全的)...原创 2018-02-26 14:19:20 · 810 阅读 · 0 评论 -
教你深刻理解Runtime机制
教你深刻理解Runtime机制什么是Runtime?概念Objective-C是基于C语言加入面向对象特性和消息转发机制的动态语言,这就是说它不仅需要一个编译器,还需要Runtime系统动态的创建类和对象,进行消息发送和转发。关于Runtime概念众说纷纭。理解Runtime,我们从源码开始…. 源码介绍 Runtime在实际开发中,其实就是一组C语言函数。官方介绍:官方文...原创 2018-03-13 18:20:44 · 1561 阅读 · 0 评论 -
iOS链接跳转到App
可行的方案大概有三种:一、直接使用URL Scheme。(优点:十分简单,在plist文件中配置一个scheme,点击短信中的scheme或者将scheme输入到浏览器中就可以直接跳到App中。 缺点:当手机上没有安装App时,短信中点击scheme会没有反应,浏览器中会访问失败。而且在微信和QQ中这种方式是被禁用的)。二、使用iOS9之后的新特性,通用链接(Universal Links...原创 2018-03-14 13:45:30 · 9903 阅读 · 2 评论 -
iOS横向滚动的scrollView和系统pop手势返回冲突的解决办法
原理:scrollView的pan手势会让系统的pan手势失效,所以我们只需要在系统手势失效且scrollView的位置在初始位置的时候让两个手势同时启用就可以了1.首先自定义一个scrollView,比如:CustomScrollView,遵守协议,然后在实现文件中写如下代码:-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestur...原创 2018-03-14 14:33:56 · 1189 阅读 · 1 评论 -
UIViewAnimation动画过程中的手势响应
UIView动画以下方法在动画过程中手势交互默认是关闭的。+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);原创 2017-12-15 14:57:47 · 1120 阅读 · 0 评论 -
为什么你申请微信支付收到的邮件中没有PaySignKey?
微信支付现在分为v2版和v3版2014年9月10号之前申请的为v2版,之后申请的为v3版。V2版中的参数有 AppID AppSecret 支付专用签名串PaySignKey 商户号PartnerID 初始密钥PartnerKey并且包含一个证书文件: 安全证书V3版中的参数有 AppID AppSecret 商户号PartnerID 初始密钥PartnerKey 商户号MCHI原创 2017-12-06 09:38:37 · 2180 阅读 · 0 评论 -
iOS 轮播图 YJBannerView 的使用方法详解
源码: YJBannerView Github源码地址 YJBannerView使用简单、功能丰富的 Objective-C版 轮播控件, 基于 UICollectionView 实现, 多种场景均支持使用.效果样例Features[x] 支持自带PageControl样式配置, 也支持自定义 [x] 支持上、下、左、...原创 2017-09-28 16:25:47 · 4733 阅读 · 0 评论 -
iOS 将UIView控件转换成UIImage对象
源码地址:前去查看链接/** 将 UIView 转换成 UIImage @param view 将要转换的View @return 新生成的 UIImage 对象 */- (UIImage *)yj_convertCreateImageWithUIView:(UIView *)view{ UIGraphicsBeginImageContext(view.bounds.size);原创 2017-09-29 09:55:20 · 1978 阅读 · 0 评论 -
Banner 怎么实现轮播不同尺寸的图片
需求:UI设计APP的 BannerView 轮播图的图片每个Item尺寸不同,比如:设计 BannerView 的可视区域大小是 375 x 420px, 而图片来源一些是375 x 420px, 而另一些是 375 x 450px 的, 对于高度为 450px 的图片就会有 y 方向上的压缩,造成变形。解决办法:将不同尺寸的图片资源用不同的控件放置,控件A放置 375 x 420px的图片,控件原创 2017-09-30 15:06:04 · 6307 阅读 · 0 评论 -
Xcode 9 在 Jenkins 自动打包脚本 中使用 Xcode integration 插件打包失败的原因
问题使用 Jenkins 来做 iOS 项目的持续集成,升级 Xcode 9 之后,编译完成之后打包会一直报如下所示的错误:error: exportArchive: "APPNAME.app" requires a provisioning profile with the Push Notifications feature.Error Domain=IDEProvisioningErrorDo原创 2017-10-11 10:54:59 · 4906 阅读 · 3 评论 -
iOS一行shell脚本自动打包上传指定位置
一、背景在实际开发中,需要不停的打各种包,开发人员忙于新需求实现,打包时重复而且没有意义的事情。于是造了这个轮子,配置好参数一键上传到内测网站(蒲公英、Fir等)或者APPStore。源码地址:https://github.com/stackhou/AutoPacking-iOS二、预览效果图2.1 执行脚本 和 选项配置2.2 开始构建2.3 构建成功并开始导出ipa2.4 导出ipa成功并上传到原创 2017-10-12 16:48:42 · 1077 阅读 · 1 评论 -
中国国测局地理坐标(GCJ-02)、世界标准地理坐标(WGS-84) 、百度地理坐标(BD-09)坐标系转换
YJLocationConverter中国国测局地理坐标(GCJ-02)<火星坐标>、世界标准地理坐标(WGS-84) 、百度地理坐标(BD-09)坐标系转换工具类需求一、在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系:1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84原创 2017-11-09 15:25:08 · 25207 阅读 · 0 评论 -
SwiftProgressHUD 的使用方法
Github、cocoachina、cocoa4app等寻找了很多swift版本的HUD,都不太满意。综合对比,并没有找到好用合适的HUD开源库。于是乎 SwiftProgressHUD 是目前比较好用美观、多功能的HUD。用法如下:要求swift 3.0+iOS 8.0+ARC添加 SwiftProgressHUD 到你的工程一、CocoaPods1.将 SwiftProgressHUD原创 2017-09-28 16:46:18 · 3527 阅读 · 0 评论 -
解决 苹果对二进制 __TEXT 段大小限制问题
背景苹果官方审核规定(官方地址):当二进制 __TEXT 无法继续瘦身下去,就必须想办法绕过了。解决方法利用 rename_section 过审核,在Xcode中向 “Other Linker Flags” 中添加:-Wl,-rename_section,__TEXT,__cstring,__RODATA,__cstring-Wl,-rename_section,__TEXT,__const,原创 2017-11-10 15:31:14 · 1576 阅读 · 0 评论 -
利用UIPanGestureRecognizer 判断手势滑动方向
/** * 添加平移手势 * * @param view */ - (void)addTapGestureWithView:(UIView *)view { UIPanGestureRecognizer *recognizer = [[UIPanGestureRecognizer alloc]原创 2017-11-21 10:44:53 · 7899 阅读 · 0 评论 -
iOS开发 解决WKWebView加载的h5,无法调用拨打电话功能
H5的拨打电话代码:<a href="tel:13112345678">移动WEB页面JS一键拨打号码咨询功能</a> UIWebView加载的h5,可以调用;但是WKWebView就是不行,找了半天,最后解决,在WKWebView的WKNavigationDelegate代理方法处理,代码如下:// 处理拨打电话以及Url跳转等等 - (void)webView:(WKWebView *)w原创 2017-11-21 11:25:02 · 2245 阅读 · 0 评论 -
iOS 11 下 UICollectionView 的HeaderView 遮挡滚动条
这个问题在之前的 iOS 10 上是没有的,iOS 11 新出之后才出现。在使用了- collectionView: viewForSupplementaryElementOfKind: atIndexPath:的 UICollectionView 页面中,滑动页面的时候滚动条会被 HeaderView 遮挡.修改前的样子://// CustomCollectionReusableView.m原创 2017-11-16 10:13:49 · 1096 阅读 · 0 评论 -
用Xamarin和Visual Studio编写iOS App
一说开发 iOS app,你立马就会想到苹果的开发语言 Objective C/Swift 和 Xcode。但是,这并不是唯一的选择,我们完全可以使用别的语言和框架。一种主流的替换方案是 Xamarin,这是一个跨平台框架,允许你开发 iOS、Android 和 OSX、Windows app,它使用的是 C# 和 Visual Studio。最大的好处在于,Xamarin 允许你在 iOS 和 A转载 2017-11-22 12:41:03 · 5017 阅读 · 1 评论 -
iOS 11 适配集锦
iOS 11适配 飞机票1.Demo源码地址 2.简书地址安全区域的适配用Xcode 9 创建storyboard或者xib时,最低版本支持iOS 8时会报: Safe Area Layout Guide before iOS 9.0 如图:原因:在iOS7中引入的Top Layout Guide和Bottom Layout Guide,这些布局指南在iOS 11中被弃用,取而代之的是Safe A原创 2017-09-28 09:46:44 · 6189 阅读 · 0 评论