- 博客(164)
- 收藏
- 关注
转载 iOS 与OS X多线程和内存管理笔记:MRC与引用计数
前言时间已经过去一年多了,每一次在地铁上读这本书都有新的体会和心得.所以在这做一下深层次的分享,让大家对iOS内存管理这块有更加深入的了解.NSObject类解析NSObject是Objective-C所有类的基类.这里我们就深入了解一下NSObject的内存相关知识内容.我们都知道NSObject是通过引用计数来决定对象是否需要被释放的,在<>这本书中是通过GNUstep来阐述说明N...
2018-06-02 09:52:44
468
转载 初级入门学习,iOS拖动排序【UICollectionView】
项目中的需求,近期在做优化和版本迭代,就把这块的东西拎出来单独整理一下。实现思路新建一个类继承UICollectionView,并给这个View添加长按手势。 关于iOS中的手势,这篇文章写的很详细,可以参考。监听手势事件。手势有很多的状态,这个系统文档中就可以看到,也有对应的说明。此处,监听四种状态,根据不同的状态做相应的操作。12345678- (void)longPressed:(UILon...
2018-06-01 16:49:51
732
转载 【ios学习】问答类APP的辅助程序
最近问答类APP很火网上的各种搜题辅助程序也很多, 作为程序员,当然也凑波热闹自己搞了一个.环境Python3+google OCR其中图片的截取利用了macOS + iOS的配合采用的大致原理是手机连上Mac,通过自带的QuickTime实时显示手机屏幕,具体做法可以百度怎么用 Quick Time Player 为 iPhone 录制屏幕这个搜题辅助其实可以用在任意答题类APP上,调整截图坐标...
2018-05-23 21:11:36
573
转载 【ios学习】深入理解Thread线程和Queue队列
思考一段代码我们先来看一段代码,猜猜一下代码的的运行结果:12345678910111213141516171819202122232425 // 主队列 dispatch_queue_t mainQueue = dispatch_get_main_queue(); // 给主队列设置一个标记 dispatch_queue_set_specific(mainQueue, "...
2018-05-18 14:18:18
1126
转载 【ios学习】夜间模式的实现
随着越来越多的人晚上用电子设备,夜间模式变得愈加重要。夜间模式示范我们的目标是通过简单办法给你的UI组件添加主题,并在主题间动态切换。为了达到这个目标,我们要建立一个协议,称为Themed,任何参与主题的要符合它。1234567891011121314extension MyView: Themed { func applyTheme(_ theme: AppTheme) { ...
2018-05-14 09:42:07
587
转载 iOS模块化:基础框架的创建
现在大家都在推进模块化,每次粘贴拷贝烦了,我也搞个模块化,因为公司要新起项目,我想我不能每一次都来粘贴一次这么多的基础库文件,我直接模块化出来好了,每次要用pod下就好了,还可以持续更新。首先我们来说下这样做的好处,特别是多人开发的时候,这样是特别方便的,还有就是代码干净,工程里只有业务代码,然后业务代码再根据功能进行模块,我这里还没弄,项目不大不太需要。主要是在大工程这样的好处更大,清晰,问题好...
2018-05-13 09:25:57
440
转载 【ios学习】实际开发中的深浅拷贝问题 - 解答
NSString copy测试12345NSString *string = @"test";NSString *string1 = [string copy];NSString *string2 = [string mutableCopy];NSMutableString *string3 = [string copy];NSMutableString *string4 = [string mu...
2018-05-12 18:57:40
180
转载 iOS开发实战 - 使用网络时间实现租赁周期、送还货时间选择
使用网络时间进行租赁周期选择、送还货时间选择,避免当前时间和服务器时间不同步/一些用户恶搞,修改本地时间,造成无效订单,业务看起来不复杂,但处理起来还是稍微有点麻烦:1.除了时间真实性和及时性的问题,还要注意上方加减周期和下方换货时间的联动问题,送货时间和换货时间切换后再改变上方加减周期的联动问题;2.下面时间的获取、判定、比较代码只是其中的一部分一起来看一下效果:项目实战技术点:1.获取网络时间...
2018-05-10 08:42:56
237
转载 【ios学习】优化 App 的启动时间实践 iOS
前言当用户按下home键的时候,iOS的App并不会马上被kill掉,还会继续存活若干时间。理想情况下,用户点击App的图标再次回来的时候,App几乎不需要做什么,就可以还原到退出前的状态,继续为用户服务。这种持续存活的情况下启动App,我们称为热启动,相对而言冷启动就是App被kill掉以后一切从头开始启动的过程。我们这里只讨论App冷启动的情况。对于冷启动来说,启动时间是指从用户点击 APP ...
2018-05-09 09:57:57
549
1
转载 【ios学习】移动App开发需要考虑的13个方面
这篇文章是面向刚进入移动app开发领域的新人。经过参与各种各样的移动项目,我总结出一些考虑方面。当你设计或构建一个移动应用时候,需要把它们记在脑中。移动app开发考虑的方面认证层(Authentication Layer)这应该是你开发链中的第一步。为了应对各种各样的认证请求与inflight request,这一层应该有足够可扩展性。需要留意认证令牌的刷新,令牌刷新失败或类似情况时的错误处理。自...
2018-05-08 09:38:59
348
转载 【ios学习】Swift 4.2新特性
Swift 4.2是Swift 4的第二次小更新,随之带来了很多很棒的改进-这使得今年将成为Swift的重要一年,并且更加确认这个社区驱动的Swift演变进程正在让一个伟大的语言变得更好。这次我们获得了一些特性比如enum case 数组,warning与error编译指令,动态成员查找等等,这些都是Swift 4.1新特性(详见我的文章what's new in Swift 4.1)之外新增加的...
2018-04-29 14:02:44
436
转载 iOS开发笔记---- 键盘、静态库、动画、Crash定位
前言分享开发中遇到的问题,和相关的一些思考。iOS11键盘问题功能背景:弹出键盘时,如果有输入框的话,需要输入框的位置跟随键盘大小而变动。问题描述:当快速切换键盘之后,容易出现输入框的位置没有紧贴键盘,如下:(以简书键盘为例)iPhone 7 Plus,iOS 11.1.2,简书相关实现:输入框监听系统的UIKeyboardWillShowNotification和UIKeyboardWillHi...
2018-04-28 12:10:01
362
转载 iOS 多国语言本地化与App内语言切换(Swift)
前言语言本地化 大家肯定都多少都听过,今天我要分享的是快速实现语言本地化,与App内语言切换核心内容主要是三个部分storyboard/xib本地化纯代码本地化语言切换准备工作项目中添加语言storyboard/xib本地化storyboard/xib做本地化Xcode基本上是一键搞定了。很简单只要勾勾选选就可以了这边只涉及到一个更新的问题通过 ibtools命令 可以使storyboard/xi...
2018-04-27 09:09:44
1479
转载 【ios】Runtime源码阅读分享之对象的本质,了解isa
引言我们都知道,Runtime 是 Objective-C 这门动态语言的核心,只有理解了它,我们才能够更好的理解 Objective-C 到底是如何工作的,在编程时,也会更加得心应手。由于时间和精力有限,此次我主要想从以下几方面来进行 Runtime 源码的阅读,日后将会逐步完善。由于总体篇幅较长,所以我将会每一部分拆分成一篇文章来具体分析。目录一、对象的本质,了解 isa二、对象的生命周期三、...
2018-04-26 13:21:04
256
转载 【ios学习】OneClock的翻页时钟效果是如何实现的
OneClock目前的三个表盘中用户最喜欢的是翻页时钟。翻页效果是表盘的核心,也是我花时间调试最久的细节。经过7次的产品迭代,终于调整到了一个合适的效果。实现这个动效的方法只需用到CABasicAnimation中的以X轴旋转即可。CABasicAnimation实际上还有很多参数,比如大小、透明度、背景颜色等,用这个方法做很多动画都是可以实现的。制作翻页时钟的效果,实际上需要解决3个问题:1.只...
2018-04-25 10:24:59
2056
转载 iOS图片浏览器(功能强大/性能优越)
支持 cocopods,功能完善,性能不错,代码质量尚可,喜欢的朋友可以给个小星星。为了适应组件的自定义需求,代码和逻辑有点多,所以尽量不要修改源码。写在前面本文讲解 YBImageBrowser 的组件设计思路和部分技术实现原理,对本框架有兴趣的朋友可以看看 。行文的重点是笔者的框架设计理念、代码及体验优化的思考、关键技术点的实现,希望不管是老鸟还是新手看完之后都能有所收获和感悟。欢迎大家交流探...
2018-04-24 11:04:21
1001
转载 【ios学习】浅谈Runtime
一、Runtime基石:Objective-C对象模型1、对象每一个对象都是类的实例, 类中保存对象的方法列表;当一个对象方法被调用时,类会首先查找它本身是否有该方法的实现,如果没有,则会向它的父类查找该方法,直到NSObject(根类);类是元类 (metaclass) 的实例;元类保存类方法列表;当一个类方法被调用时,元类会首先查找它本身是否有该类方法的实现,如果没有,则会向它的父类查找该方法...
2018-04-23 09:14:16
235
转载 【ios学习】从0开始写一个直播间的礼物系统
前段时间公司APP要对直播间的礼物系统进行改版,由于以前直播的收入不在于礼物分成,所以以前的礼物系统是很简单的一个展示而已.为适应主流直播间的礼物效果,特由此改版!1. 所有直播间的礼物系统,第一步用户看到的无外乎都是礼物的列表界面纵观主流直播间的礼物列表应该都是使用UICollectionView实现的,所以我也不例外,下面就是各种撸代码.效果如下看着效果还不错吧.但是但是我突然发现一个问题.礼...
2018-04-22 09:50:24
636
转载 iOS 封装.framework 以及使用
.framework是什么?.framework是什么?这个问题相信做iOS的都知道答案。 在我们的日常开发中,经常会用到各种已经封装好的库,比如支付宝、微信SDK等等中的库,这些库可以给我们的开发带来很大的便利。有的时候,由于工作的需要,我们需要对自己的项目进行封装,生成库,方便别人的使用。在这里就边参考好点的博客,边总结一下我们经常看到的.framework。那什么是“库”呢?“库”是共享程序...
2018-04-21 11:26:47
408
转载 iOS性能分析和优化
前言: 随着项目的扩大和功能的增多,代码没有经过严格的调试和优化,要么任性地卡顿运行,要么就低调地崩溃,最后导致用户用着不开心,开发者也比较烦恼。为了突破这个这个关卡其实并不难,首先开发者只要在Xcode自带的监控调试工具 Instruments 上花点功夫就能够让代码顺畅运行。工欲善其事,必先利其器。Instrument对于iOS开发来说,是发现并且解决问题的一把利器。Instruments 提...
2018-04-20 16:54:12
350
转载 iOS 指纹登录(TouchID)集成方案
TouchID指纹识别是iPhone 5S设备中增加的一项重大功能.苹果的后续移动设备也相继添加了指纹功能,在实际使用中还是相当方便的,比如快捷登录,快捷支付等等.系统提供了相应框架,使用起来还是比较方便的.使用LAContext对象即可完成指纹识别,提高用户体验.TouchID提示:指纹识别必须用真机测试,并且在iOS8以上系统.TouchID API使用1.添加头文件1#import2.判断系...
2018-04-19 09:55:22
599
转载 iOS蓝牙开发CoreBlueTooth库核心方法使用介绍
一、引言蓝牙是设备近距离通信的一种方便手段,在iPhone引入蓝牙4.0后,设备之间的通讯变得更加简单。相关的蓝牙操作由专门的 CoreBluetooth.framework进行统一管理。通过蓝牙进行通讯交互分为两方,一方为中心设备central,一方为外设 peripheral,外设通过广播的方式向外发送信息,中心设备检索到外设发的广播信息,可以进行配对连接,进而进行数据交互。这里我写了一个轻量...
2018-04-18 12:41:40
479
转载 iOS面试知识点整理
一、基础知识点设计模式是什么? 你知道哪些设计模式,并简要叙述?设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的事情。1). MVC模式:Model View Control,把模型 视图 控制器 层进行解耦合编写。2). MVVM模式:Model View ViewModel 把模型 视图 业务逻辑 层进行解耦和编写。3). 单例模式:通过static关键词,声明全局变量。在整个进...
2018-04-17 20:12:45
394
转载 iOS 性能优化总结
卡顿产生的原因在VSync信号到来后,系统图形服务会通过CADisplayLink等机制通知App,App主线程开始在CPU中计算显示内容,比如视图的创建、布局计算、图片解码、文本绘制等。随后CPU会将计算好的内容提交到GPU去,由GPU进行变换、合成、渲染。随后GPU会把渲染结果提交到帧缓冲区去,等待下一次VSync信号到来时显示到屏幕上。由于垂直同步的机制,如果在一个VSync时间内,CPU或...
2018-04-15 09:22:31
346
转载 Weex-iOS源码-CSS Layout 分析
Layout 介绍Layout是FaceBook开源的一个跨端CSS布局引擎。 Weex 引入了Layout 在原来的基础上进行命名空间上的调整, Layout在Weex中主要是作为一个CSS参数的容器,对CSS的参数的管理。Layout源码Layout源码由C语言编写,主要包含可以存储CSS参数的结构体、枚举,以及一些相关的C函数。 1、结构体、枚举 Layout.h文件中声明了对应于CSS属性...
2018-04-14 16:42:47
146
转载 [iOS]5 分钟实现抖音 APP
首先我们来分析一下这个界面,这是个竖向滑动的 scrollView,我们可以在 scrollView 上添加 3 个 view,然后将 scrollView 滚到中间红色 view 的位置,以后每次用户滑动完成以后,都将 scrollView 重置到这个状态,这样就能实现抖音那种无限滑动的效果。然后,每次用户滑动完就开始播放视频,这样我们就能实现抖音这个效果了。有了思路,接下来开始写代码。- (v...
2018-04-13 11:48:36
2867
转载 Weex-iOS源码-CSS Layout 分析
Layout 介绍Layout是FaceBook开源的一个跨端CSS布局引擎。 Weex 引入了Layout 在原来的基础上进行命名空间上的调整, Layout在Weex中主要是作为一个CSS参数的容器,对CSS的参数的管理。Layout源码Layout源码由C语言编写,主要包含可以存储CSS参数的结构体、枚举,以及一些相关的C函数。 1、结构体、枚举 Layout.h文件中声明了对应于CSS属性...
2018-04-12 20:46:45
182
转载 iOS App 连续闪退时如何上报 crash 日志
为保障线上 App 的用户体验,我们一般都会对线上 App 的 crash 率做实时监控,一旦检测到 spike,可以即刻调查原因,但这一切的前提是 crash 日志能够准确上报。crash 日志上报有两个难点:crash handler 安装之前的代码要绝对稳定如果日志采集器还没成功启动就 crash 了,自然什么日志也无法采集到。这一点并没有太多技巧可言,只能严格限制 handler 启动之前...
2018-04-11 12:12:42
1683
转载 iOS性能优化系列篇之“优化总体原则”
笔者由于在iOS开发过程中做过一些优化的工作,对iOS性能优化有一些粗浅的认识,一直想把自己这些经验,简单总结一下。于是最近在工作闲暇时间,准备针对iOS开发的性能优化写一系列文章。作为整个系列的第一篇,我打算针对iOS的优化中的一些总体原则做一些总结。因为我觉得无论列表流畅度优化也好、启动时间优化也好还是说其他方面的优化,都有一些共性的原则,只有掌握了这些总体性的原则,才能够更好的做优化,给我们...
2018-04-10 12:33:26
606
1
转载 【iOS学习】UITableView占位图的低耦合性设计
缘由基于面向对象的开发原则中的迪米特法则:一个软件实体应当尽可能少的与其他实体发生相互作用;为了降低列表无数据占位图的使用成本及代码耦合性,对网上现用的一些解决方案加以优化;核心针对基于runtime替换reloadData方法的相关,这里就不做多阐述了,本文主要讨论以下几个问题:1.需要显示占位图的情况;2.tableView初次系统调用reloadData方法的干扰排除最优方案;3.网络因服务...
2018-04-09 12:23:48
460
转载 【iOS学习】Macbook外接2k显示器开启hidpi的方法
一、前言:大家平时用macbook开发的时候一般都喜欢外接一个显示器开发吧?这里我用了一台2k的显示器,我们要开启hidpi模式。你们会问到为什么要开启hidpi模式呢?我的2k显示器是2560*1440分别率,如果采用默认的设置,那么在显示器上面的字会特别的小。如果我们开启显示器的hidpi模式就类似于macbook的retina模式,那么就会在图像大小不变的情况下,变的特别清晰。我在升级最新的...
2018-04-08 12:18:26
7461
1
转载 iOS架构:AOP实现局部解耦
一、写在前面前些时间听朋友说了一个话题,利用 AOP 解耦细节业务,确实有趣。因为我们通常情况下说起 AOP,都会想起比如“埋点”、“method swizzing”等字眼,角度比较宏观。AOP 国内开发者喜欢称之为面向切面编程,其作为面向对象编程的一种补充,在实际业务场景中发挥着巨大作用。二、为什么使用 AOP面向切面编程,也可以理解为面向功能面编程,将某一特定的功能视为一个切面,不但可以复用代...
2018-04-06 12:59:35
284
转载 iOS学习之入门组件化
写在前面组件化是近年来比较火的一个概念,现在很多公司的 app 包含的内容和模块越来越多,代码的维护和迭代也会产生很大的困难,每个模块各司其职,并且可以做到很好的复用。当我们的工程越来越大,而我们想要测试某一个部分的功能时,就会产生很多不必要的额外工作,这时,我们想到了将整个 app 拆分成很多组件,每个组件可以单独编译运行进行测试,并且当我们参与项目的人员越来越多时,代码量越来越大时,单工程代码...
2018-04-05 16:55:34
204
转载 【iOS学习】为设置中心添加常用功能
在我们开发所有的应用中,通常会提供包含多项功能的设置中心。这些功能可以包括,给用户推荐自己的其他作品、邀请用户好评、提供反馈通道、邀请用户分享应用、打开官网或某些其他地址。这些功能虽然用户使用频率不高,但对于应用的设置中心是必备的。1.跳转到AppStore,邀请好评或推荐其他应用2.提供系统邮件反馈通道3.调取系统分享功能分享应用4.在应用内打开网页,实现官方网址、应用更新说明或打开其他网址通常...
2018-04-04 21:14:59
246
转载 iOS文件内存映射详解(mmap)
文件内存映射(mmap)之前看过很多文章提及到,但是都没有写iOS中具体的实现,只是都说对于大文件读写效率比较高等。所以作者就专门研究了以下mmap技术,并且实现了一下mmap文件映射是将文件的磁盘扇区映射到进程的虚拟内存空间的过程。一旦被映射,您的应用程序就会访问这个文件,就好像它完全驻留在内存中一样(不占用内存,使用的是虚拟内存)。当您从映射的文件指针读取数据时,将在适当的数据中的内核页面并将...
2018-04-03 12:45:51
1235
转载 阿里腾讯头条美团等iOS面试总结
前言最近春招一直在紧张的面试中,现在已经拿了头条offer,所以也没那么紧张了。决定把面试题拿出来给大家分享一下,欢迎大家来一起探讨。现在先简单的分享一下面试题。美团一面记不太清了23333主要问项目的一些技术点如何让一个label靠左,一个label靠右,然后右边的label能够完全显示算法奇数排在前面,偶数排在后面智力题,一个骑手送餐,ABCD商店,送给abcd四个人kvo的实现原理消息调用的...
2018-04-02 12:21:32
250
转载 【iOS】巧用 LLVM 特性: Objective-C Class Properties 解耦
前言Emmmmm... Objective-C Class Properties 早在 WWDC 2016 中就已经公示,给 Objective-C 加入这个特性主要是为了与 Swift 类型属性相互操作。官方是这么说明的:Interoperate with Swift type properties.嘛~ 虽然是为了配合 Swift 加入的新特性,不过聊胜于无哈!Note: 值得一提的是 Obj...
2018-04-01 15:03:08
310
转载 【iOS学习】 视频添加动效水印步骤简介
简概:本次文章主要介绍给视频添加动效水印的几种方式,以及实现代码。使用AVFoundation + CoreAnimation 合成方式基于Lottie 核心也是 CoreAnimation ,这里我们也可以使用AVFoundation + Lottie 合成方式我们同样可以使用序列帧资源或者gif资源 来编写一段keyFrameAnination,这里我们就介绍一段 AVFoundation +...
2018-03-31 10:46:21
926
转载 iOS Xcode9 封装生成.framework
从上面我们可以看出.a 和.framework的区别就是.a+.h+soureFile=.framework,这样的话,我们还是直接封装个.framework比较好。封装framework步骤1、打开xcode,新建工程这里我使用的是Xcode9,选择Cocoa Touch Framework,然后点next。2、创建功能类或者拖入已有的功能类这里我创建的是ShowResult类。3、实现功能类的...
2018-03-30 15:37:58
234
转载 在iOS中如何正确的实现行间距与行高
最近准备给 VirtualView-iOS 的文本元素新增一个 lineHeight 属性,以便和 VirtualView-Android 配合时能更精确的保证双平台的一致性。面向 Google 以及 Stack Overflow 编程了一会后发现,能查到的资料大部分是介绍如何实现 lineSpacing 属性,而不是 lineHeight。但是我就是因为 iOS 和 Android 的默认 li...
2018-03-29 14:37:50
427
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人