iOS开发
文章平均质量分 78
buyu03
iOS开发工程师
展开
-
RxSwift 介绍与简单使用
文章目录一、 Rx 介绍1、什么是Rx2、RxSwift3、RxCocoa二、Rx 常见用法1、给 button 添加点击事件(RxCocoa)2、事件 + bind + combine3、遵循代理并实现4、闭包回调5、通知6、多任务依赖关系管理7、多任务异步并行三、DisposeBag(清除包)介绍:四、函数式编程介绍参考文献:一、 Rx 介绍1、什么是RxRx 是 ReactiveX 的缩写,简单来说就是基于异步 Event 序列的响应式编程。Rx 可以简化异步编程方法,并提供更优雅的数据绑定,让原创 2020-07-13 22:51:25 · 2200 阅读 · 0 评论 -
Xcode优化编译时间
一、如何查看编译时间终端执行下面命令defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES编译时,Xcode编译进度条走完后,会展示编译时间二、可优化点build setting中 Optimization Level 设置优化配置项含义None编译器不执行优化,不改善代码性能,编译耗时较少Fast编译器执行简单的优化来提高代码性能,相对增加编译耗时Faster编译器执行所有优化,原创 2020-05-16 19:25:49 · 1599 阅读 · 0 评论 -
Xcode10打包发布App Store,iOS9崩溃
最近更新了Xcode10和macOS10.14,想着可以在暗黑模式下尽情潇洒。然而,在用Xcode10打包提交一个版本之后,线上崩溃接踵而至。这就很尴尬了,发布前,不管是开发自测还是测试同学的调试,都没有问题,一上线就各种问题。查看了bugtags上的反馈情况,发现崩溃基本集中在iOS9系统上,Google了一波,大神们说,是Xcode10的毛病。具体情况是这样的:bug复现条件:1、A...原创 2018-10-16 10:15:57 · 2332 阅读 · 1 评论 -
App Store 4.3 大礼包被拒 ,马甲包制作方案
马甲包制作方案基本原则:不阉割功能,顺利上架为确保上架成功,马甲包需进行差异化处理,可从以下几个维度进行操作:1、界面差异化: (1)全套UI风格替换; (2)不影响功能前提下,部分界面布局微调,尤其是一级界面;2、文件差异化: (1)除三方库以外,修改所有文件的命名,使用一定的命名规则; (2)添加无用垃圾文件,加大文件差异化;3、代码差异化: (1)以一...原创 2018-10-16 11:02:41 · 1903 阅读 · 1 评论 -
iOS framework如何支持bitcode以及bitcode检测
1、检测APP、静态库、framework是否支持bitcode(1)静态库:打开终端,输入一下指令,xxx.a代表你的静态库路径otool -arch armv7 -l xxx.a | grep __bitcode | wc -l如果输出的数字不为0,就代表包含bitcode(2)APP、framework:framework和APP,只要传递对应的二进制文件即可。由于A...原创 2019-01-25 15:08:00 · 3462 阅读 · 2 评论 -
iOS 启动图国际化
如果APP是支持多语言的,那么图片国际化必不可少,普通资源的国际化不在此做赘述了,主要说一下启动图的国际化以及实现过程中遇到的坑。1、使用launchImage的国际化方法苹果提供了一个info.plist设置的key叫做UILaunchImages,顺利实现启动图国际化。UILaunchImages是一个数组,每个对象对应了一个启动图,每个启动图有四个键需要设置,分别为名字、最低版本、大...原创 2019-01-25 15:48:37 · 2607 阅读 · 1 评论 -
iOS VIPER架构简析
在建筑学领域,有这样一句话:我们虽然在营造建筑,但建筑也在重新塑造我们。作为一名开发人员,如果你曾认真的去做过架构相关的东西,对这句话必然有着深刻体会。一个好的架构,不仅可以让一款产品成功的投入使用,还可以让产品具有良好的可维护性、可扩展性。这篇文章,主要介绍一种被称为VIPER的架构,并基于swift的特性去做相应的设计。VIPER是视图(View)、交互器(Interactor)、展示器(...原创 2019-01-23 17:18:48 · 2518 阅读 · 0 评论 -
使用UITableViewAction自定义UITableView左滑样式(iOS8及以后可用)
首先,举个栗子:微信会话列表,左滑某个会话cell,会有“标为未读”、“删除”两个选项。在我们的日常开发中,也经常会遇到这样的需求,网上也有很多大神写了相关的三方库,但在很多情况下,开发人员只需要这些三方库的一小部分功能,却要引入整个三方库,增大项目体积。这里,给大家提供一种系统自带的简单实现方案。一、左滑仅需要展示单个按钮左滑后仅需要展示单个按钮,这是一种很简单、试用场景很多的需求,实现...原创 2019-02-27 15:20:51 · 427 阅读 · 0 评论 -
XKRouter简介
XKRouter XKRouter是一款基于URL标准的、用于iOS系统的路由跳转策略。设计XKRouter最大的目的就是希望以后所有的页面跳转可以随心所欲的控制,不再受限于层级、状态、跳转方式、动画效果。当然了,这是一个美好的想法。所有美好的建筑,都是一砖一瓦积累出来的,一步一步走,一点一点实现,让它...原创 2019-06-24 08:55:16 · 590 阅读 · 0 评论 -
iOS 11及iPhone X适配
最近公司要做iOS11和iPhone X的适配工作,上网百度了很多,自己也做了相应的测试和实现,目前做出如下总结,希望广大猿媛们能够互相借鉴,多提意见:一、iPhone X适配:1、状态栏:在iPhone X上,状态栏高为44pt,对于之前自定制状态栏导航栏的同学来说,这无疑是一个噩耗,又又又要改了,和其他机型还要保持兼容,目前主流的做法是判断机型,如果是iPhone X,就使用44p原创 2017-11-06 16:24:36 · 622 阅读 · 0 评论 -
Xcode 诡异报错xcdatamodel: cdtool cannot compile 和 dyld: Symbol not found: ___NSDictionary0__
1..xcdatamodel: cdtool cannot compileCoreData报错,网上可以搜到很多类似错误的解决方案,但都不能解决我的问题,最终我把Xcode卸载重新安装,就好了。(PS:可能是安装的xcode是从开发者网站上下载,然后替换本地xcode,导致xcode有问题)2.dyld: Symbol not found: ___NSDictionary0__ Ref原创 2017-08-22 14:06:53 · 1119 阅读 · 0 评论 -
iOS 静态库使用的配置 -ObjC
1、如果静态库中有category,那么需要添加 -ObjC 参数标识,否则可能会报:unrecognized selector sent to instance2、参数说明(引用自:http://www.cnblogs.com/robinkey/archive/2013/05/27/3101095.html)-ObjC:加了这个参数后,链接器就会把静态库中所有的Objective-C原创 2017-08-22 14:04:22 · 430 阅读 · 0 评论 -
UILabel专题
UILabel是iOS开发中最常用最基础的控件之一,其父类为UIView。1、常用属性: // 初始化 UILabel 对象,并设置其在父视图上的位置 UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 200, 20)]; // 设置 UILabel 中的展示文字原创 2016-11-04 15:02:51 · 305 阅读 · 0 评论 -
左滑返回手势失效问题
最近面试了一个iOS程序媛,看了她的项目,其中一个项目中存在一个很大的问题,左滑返回手势全部失效了。看了一下,她是自定义了navigationBar的返回键,也做没做相应的处理,导致左滑返回失效了。在这里,说一下我的处理方式,有不合适的地方,希望大家能够指正一下。在自定义backButton之后, 加入下面这句代码,把手势的许可打开:self.navigationControl原创 2017-03-17 16:19:01 · 741 阅读 · 1 评论 -
block的循环引用,未能及时释放问题
近期在开发过程中,偶尔会发现工程里某个页面的通知(NSNotificationCenter)有时会被执行好几次(ps:在页面已经pop出栈之后继续执行,理论上出栈之后,页面应该被释放,通知在dealloc中也被移除)。通知的使用是在viewDidLoad方法里注册,在dealloc方法中移除。按理来说,在viewcontroller的生命周期里这两个方法都只会执行一次,是相对应的,所以不应该存在通原创 2017-03-16 17:59:59 · 447 阅读 · 0 评论 -
iOS手势冲突
手势冲突,在iOS开发过程中,这是一个很常见的问题。举个例子:在自定义一个相册的时候,就要用到大量的手势,左滑、右滑、捏合、拖动、长按等等;这些手势都需要加载到UIImageView上(UIImageView必须开启用户交互,设置userInteractionEnabled=YES,在iOS中UILabel、UIImageView的userInteractionEnabled默认都是NO,UIBu原创 2017-04-18 10:24:27 · 613 阅读 · 0 评论 -
iOSAPP生命周期
一、应用程序状态iOS 应用程序有一下几种状态Not Running 未运行 应用程序尚未启动Inactive 未激活状态程序在前台运行,但未收到任何事件,此时应用程序会停留在未激活状态77Active 激活程序在前台运行且收到事件,这是在前台运行的正常模式;Background 后台程序在后台运行且拥有执行代码的能力,在未作原创 2017-04-18 10:33:32 · 468 阅读 · 0 评论 -
NSTimer使用:暂停、继续、释放、解除循环引用
NSTimer的使用方法:1、初始化:+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;+ (NSTimer *)scheduledTimerWithT原创 2017-06-29 14:06:05 · 1339 阅读 · 1 评论 -
iOS之懒加载技术
在iOS开发过程中,经常会用到懒加载技术,比如我们存放网络数据的数组,自定义的控件,复杂的运算逻辑等等情况下都会用到懒加载技术。下面介绍一下什么是懒加载懒加载:1、也被成为延迟加载,主要的特点是:用到时再加载,不用不加载,可以提高性能节约支出;2、加载过之后就不会再次加载,节约了系统资源;3、对于实际开发中可能会遇到的一些顺序问题,懒加载可以作为一个很好的解决方案。懒加原创 2017-06-29 14:34:56 · 353 阅读 · 0 评论 -
NSRunLoop相关
1、NSRunLoop是iOS消息机制的处理模式,它的主要作用是控制NSRunLoop中线程的执行和休眠,在需要的时候使当前NSRunLoop控制的线程工作,不需要的时候则让当前NSRunLoop中控制的线程休眠。2、从原理上来说,NSRunLoop一直处于循环检测的状态,从线程的start到线程的end,检测inputsource同步事件,检测time source同步事件,检测到输入源则就原创 2017-07-04 15:42:06 · 256 阅读 · 0 评论 -
UIWebView加载网页内存占用过高
在使用UIWebView去加载网页的时候,注意过的同学都会发现,内存占用瞬间暴增,并且在页面dealloc之后,内存仍未释放,导致app占用内存过大。查阅资料,发现是因为HTML里的js导致了内存泄漏,每次打开一个链接就会把“WebKitCacheModelPreferenceKey”设置为1。以下是个人尝试过的解决方案:1、如果工程需要兼容到iOS8.0之前,webview遵循代理,并在代理原创 2017-07-05 14:50:14 · 1275 阅读 · 0 评论 -
iOS多线程开发:GCD
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的较新的解决方法。它主要用于优化应用程序以支持多核处理器以及其他对称多处理系统。它是一个在线程池模式的基础上执行的并行任务。在Mac OS X 10.6雪豹中首次推出,也可在IOS 4及以上版本使用(源自于百度知道)。GCD时基于C语言的,在使用的时候完全由系统来管理线程,不需要开发人员编写线程代码。原创 2016-03-05 11:28:28 · 440 阅读 · 2 评论