
ios系统能力&api
文章平均质量分 80
openglnewbee
这个作者很懒,什么都没留下…
展开
-
WkWebview相关优化研究-by美团点评
https://xibhe.com/2018/02/03/WKWebView-disabuse/index.html转载 2018-06-23 13:57:45 · 2364 阅读 · 0 评论 -
关于iOS的后台下载和断点续传,说一说自己的理解
首先,后台下载和断点续传是两件事;这里放在一起说是为了图个方便,实际二者在技术实现上没有什么关联。目前我们的下载实现一般都是基于nsurlsession和iOS7+的,所以我们这里不考虑iOS6和以前的老系统,主要技术实现也是基于nsurlsession.先说后台下载:1. 在没有特别关注的情况下,可能很多开发者使用afnetworking下载的姿势并没有考虑到后台下载这一块。在默认情况(不做特别原创 2016-12-26 19:09:42 · 6507 阅读 · 2 评论 -
iOS7下的后台传输服务实战
https://code.tutsplus.com/tutorials/ios-7-sdk-background-transfer-service--mobile-20595转载 2016-12-26 16:31:04 · 683 阅读 · 0 评论 -
ojbc.io干货文章:ios7下的多任务介绍
https://www.objc.io/issues/5-ios7/multitasking/转载 2016-12-26 16:29:56 · 748 阅读 · 0 评论 -
iOS7 background fetch 实战详解:让app自动/智能获取数据以优化用户体验
http://www.cocoachina.com/industry/20131114/7350.html转载 2016-12-26 16:27:17 · 1339 阅读 · 0 评论 -
textkit 研究,mark一下,一个不错的开源库:MLLabel(但是没有文档)
https://github.com/molon/MLLabel基于textkit实现的支持富文本的label, 可实现自定义emoji表情等原创 2016-11-16 09:34:28 · 2565 阅读 · 0 评论 -
一些系统事件的手动触发方法
测试UIViewController触发UIViewController生命周期中的事件调用 UIViewController.view, 它会触发 UIViewController.viewDidLoad()。调用 UIViewController.beginAppearanceTransition() 来触发大部分事件。直接调用生命周期中的函数手动触发UIControl Eventsdescr转载 2016-10-08 16:26:40 · 1308 阅读 · 0 评论 -
下载大图的demo by apple,值得研究和参考
https://developer.apple.com/library/content/samplecode/LargeImageDownsizing/Introduction/Intro.html附:sdwebimage 使用中遇到的下载大图问题:http://www.cocoachina.com/ios/20160920/17602.html转载 2016-09-20 15:09:05 · 593 阅读 · 0 评论 -
通过runtime替换系统类实现的代码(从github开源库fdstackview中摘录)
其中部分代码为汇编;由此可见oc的runtime的灵活性和能力。此代码仅供参考// ----------------------------------------------------// Runtime injection start.// Assemble codes below are based on:// https://github.com/0xced/NSUUID/blob/ma转载 2016-08-01 16:11:54 · 892 阅读 · 0 评论 -
textview自适应高度的计算方法
http://blog.youkuaiyun.com/smking/article/details/22221441转载 2016-07-21 16:04:21 · 828 阅读 · 1 评论 -
为mutable类型的容器(array,set等)添加kvo,有点麻烦,供参考和了解下吧
http://blog.youkuaiyun.com/caryaliu/article/details/49284185需要在被观察的属性所在的类里面实现一些方法,对开发者不友好,一般不建议使用,这里mark一下仅供参考。转载 2016-07-20 10:30:47 · 683 阅读 · 0 评论 -
iOS archive(归档)的总结 (序列化和反序列化,持久化到文件)
http://www.cnblogs.com/ios8/p/ios-archive.html转载 2016-07-20 09:27:32 · 1309 阅读 · 0 评论 -
关于iOS的后台下载和断点续传,说一说自己的理解(二,接上篇)
因为上一篇有一些细节还是没有说透,特别是断点续传这里,继续和大家聊一聊这里面的问题。 1. 关于resumedata的bug, 目前苹果在10.2中已经解决了,也就是说做适配的同学只需要额外考虑10.x和10.1.x版本。 2. 对于程序被用户手动kill和因代码原因触发的crash,后台下载恢复的行为是不同的(当然,恢复的行为都是基于同一id的backgroundsession): a.用户原创 2016-12-30 10:09:19 · 1392 阅读 · 5 评论 -
文档管理app端需求实现方案关键点记录
实现的需求包括:文档列表、下载列表(包含删除功能)、文档详情、预览和搜索,若无法在app内打开则需要提供在其他app打开的能力。简单来说,文档下载和管理的实现在技术上没有多大难度,但这里的方案实现了以下几点:1. 基于nsurlsession的后台下载,并在任务被系统中断后的恢复(比如app被手动kill, 这种情况下本方案采取的策略是自动恢复下载)2. 在其他app中打开,通过UIDocumen原创 2017-01-18 10:21:49 · 1343 阅读 · 0 评论 -
OC下的sdk版本兼容性处理技术原理和最佳实践 - from apple
先上苹果官方链接,不想阅读二手教程的可以直接deep in(给你点赞原创 2018-06-13 17:16:24 · 817 阅读 · 0 评论 -
关于iOS中的线程安全和使用场景
下面这一篇是关于线程安全保护实现的几种方式和对比,综合来讲,如果简单的同步(不考虑性能)可以使用代码实现嘴简单的@synchronized,也是我们最常用的做法。如果关注性能或在gcd中使用,推荐使用dispatch_semaphore_wait。http://www.jianshu.com/p/938d68ed832c注意:这里如果要使用dispatch_semaphore_wait来实现同步效转载 2017-08-14 16:35:59 · 537 阅读 · 0 评论 -
使用javascriptcore实现供h5调用的native接口
在app开发中使用webview,经常需要从js端调用和原生相关的交互功能。那么这样一层bridge的开发工作具体采用什么方案来实现呢? JS call OC: 方案1: 最古老也是使用最广泛、且跨平台的方案是在页面内嵌入一个iframe,然后通过该iframe触发的webview相关事件来进行hook,从而达到通信的目的。 其中回调方法的传递是通过生成一个id并保存,来回传递id,在js端原创 2017-08-16 17:25:55 · 1712 阅读 · 0 评论 -
gcd崩溃系统堆栈等,iOS性能相关度量技术,很不错,备查。
https://ming1016.github.io/2017/06/20/deeply-ios-performance-optimization/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io转载 2017-08-09 17:19:07 · 378 阅读 · 0 评论 -
iOS app设备日志查看
http://www.cocoachina.com/ios/20170719/19933.html转载 2017-07-20 08:41:53 · 4089 阅读 · 0 评论 -
iOS系统预览文件但不分享的实用技巧 (iOS10, QLPreviewController)
苹果系统的文件预览能力对于很多app来说是必要的,但其提供的UI相关api并不是可以定制的,比如需要定制toolbar, navigationbar的情况,直接使用QLPreviewController或者UIDocumentInteractionController 并不能达到想要的效果。根据笔者的试验来看,现在 iOS10 QLPreviewController 和 UIDocumentInt原创 2017-07-21 14:35:56 · 3136 阅读 · 0 评论 -
iOS中的定时操作比较和原理简单分析
定时操作对于开发人员来说有着广泛的应用场景;对于iOS开发,实现定时操作的手法也有多种,这里我们简单的进行比较和分析。1. NSTimer 简单易上手,最高级的api,调用也比较方便。(精度也最低)但:NSTimer在不做任何额外设置的情况下只能在主线程使用,且会受到其他任务的干扰(主线程runloop执行其他任务,nstimer就不能及时触发);可以设置NSRunLoopCommonModes原创 2017-07-06 11:33:21 · 615 阅读 · 0 评论 -
nsurlprotocol的理解和使用, 含demo, nice!
http://www.jianshu.com/p/7c89b8c5482a转载 2017-06-02 16:14:15 · 509 阅读 · 0 评论 -
从图片识别二维码等
从图片扫描有时候我们需要从图片中扫描二维码,或者从相册选择一张图片,代码如下,具体可以看demo。其中feature.messageString就是扫描后的结果。123456789101112- (void)findQRCodeFromImage:(UIImage *)image{ CIDetector *detector = [CIDetector detectorOfType:CIDet转载 2017-05-03 17:01:02 · 592 阅读 · 0 评论 -
iOS中的高精度图片采集和使用注意点和关键步骤
iOS中的高精度图片采集和使用注意点和关键步骤通常的自定义图片采集方案都是基于AVCaptureSession;AVCaptureSession采集出来的源数据的精度是可以通过一系列的配置来控制的: AVCaptureSessionPresetPhoto AVCaptureSessionPresetHigh AVCaptureSessionPresetMedium原创 2017-04-05 16:20:10 · 510 阅读 · 0 评论 -
iOS中的高精度图片采集和使用注意点和关键步骤
通常的方案都是基于AVCaptureSession的采集;这里采集出来的源数据的精度是可以通过一系列的配置来控制的;AVCaptureSessionPresetPhoto AVCaptureSessionPresetHighAVCaptureSessionPresetMediumAVCaptureSessionPresetLow。。。精度从高到低;以iphone6为例,可以输出的最高精度的图片原创 2017-03-22 16:37:58 · 630 阅读 · 1 评论 -
addChildViewController相关api深入剖析
注:本文根据个人的实践和理解写成,若有不当之处欢迎斧正和探讨!addChildViewController是一个从iOS5开始支持的api接口,相关的一系列的接口是用来处理viewcontroller中嵌套显示其他viewcontroller的场景的。在出现此api之前,大家可能会使用addsubview并持有viewcontroller对象的方式来实现这个需求,控制多个viewcontrolle原创 2016-07-15 14:11:04 · 2206 阅读 · 0 评论 -
老调重弹:对kvo的封装思路
关于kvo,kvo能做什么?kvo作为cocoa框架的重要特性之一,在底层框架中被大量使用。在特定的场合使用该特性往往能够带来难以想象的好处,让整个方案变得相当简洁和优雅。比如大名鼎鼎的下拉刷新的svpulltorefresh框架,其实现采用了category动态添加属性和kvo结合的方案,在egoRefresh框架的基础上获得了极大的改善,使调用者所要书写的代码量直接下降了一个量级。其中的奥秘在于原创 2016-05-28 17:22:29 · 1996 阅读 · 0 评论 -
通过宏定义判断是否引入的是framework,反之则使用双引号,实用!
例:#if __has_include()#import #else#import "TestHead.h"#endif原创 2016-06-14 11:08:40 · 3915 阅读 · 0 评论 -
ios下的精确定时(代码示例)
int main(int argcv,char *argv[]){ startTime = CFAbsoluteTimeGetCurrent();}-(void) applicationDidFinishLaunching(UIApplication *)app { dispatch_async(dispatch_get_main_queue(), ^{转载 2014-10-10 17:12:23 · 924 阅读 · 0 评论 -
ios后台在线
1.IOS进入后台最多可以申请10分钟的运行时间。2.音乐、位置、VOIP可以后台运行。3.以VOIP为例,需要在后台保持一条长连接,先将此socket打标记注册,进入后台时此socket会由系统托管,APP进入休眠。为了维持长连接,系统会在最短600秒的间隔内唤醒一次,有新数据到来时也会唤醒,但是必须在10秒内处理完毕,此时,可以通过本地通知给用户。详细文档参见官方文档。本文仅作转载 2013-03-06 09:18:56 · 1039 阅读 · 0 评论 -
ios系统能力&api转载链接汇总
1.判断有无sim卡 http://www.2cto.com/kf/201306/223744.html2.Let's Build xxx (如nsobject)系列- by Mike Ash,可以用做学习(理解很多ios内部的实现机制),很不错 https://www.mikeash.com/pyblog/friday-qa-2013-02-08-lets-build-key-value-原创 2015-08-21 17:02:47 · 1002 阅读 · 0 评论 -
ios中的枚举类型 ios6+
在iOS6和Mac OS 10.8以后Apple引入了两个宏来重新定义这两个枚举类型,实际上是将enum定义和typedef合二为一,并且采用不同的宏来从代码角度来区分。NS_OPTIONS一般用来定义位移相关操作的枚举值,我们可以参考UIKit.Framework的头文件,可以看到大量的枚举定义。 typedef NS_ENUM(NSInteger, UIViewAni转载 2014-04-14 13:38:19 · 2350 阅读 · 0 评论 -
ios应用UIApplication前后台切换代理方法在不同ios系统下的差异
对于一个完善的应用来说,需要在UIApplication的各个代理方法里进行相应的处理,特别是前后台切换时一般需要进行一些特定的操作;而对于不同版本的ios系统,其代理方法居然也存在着一些差异,不由得让人大跌眼镜。IOS4:// Pressing the home buttonWill resign active.Did enter background.// Tapping原创 2013-01-11 17:46:46 · 3145 阅读 · 1 评论 -
ios后台申请运行一定的时间
在 应用的appdelegate里面的- (void)applicationDidEnterBackground:(UIApplication *)application代理方法中加上: UIApplication *app = [UIApplication sharedApplication]; __block UIBackgroundTaskIdentifier原创 2013-05-06 09:52:03 · 1165 阅读 · 0 评论 -
一个有趣的现象(苹果的bug Or 坑?),关于区分真机和模拟器的预编译宏
TARGET_IPHONE_SIMULATOR和TARGET_OS_IPHONE 是苹果的两个宏定义,在真机sdk中位于ios->usr/include/targetconditionals.h中,在模拟器sdk中位于simulator->usr/include/targetconditionals.h中(笔者此时使用的xcode版本为5.1,sdk版本是7.1)仔细看其模原创 2014-05-07 16:20:05 · 6836 阅读 · 1 评论 -
使用AudioServices相关接口(底层c接口)的连续震动实现(ios)
废话不多说,先上接口AudioServicesAddSystemSoundCompletion(kSystemSoundID_Vibrate, NULL, NULL, systemAudioCallback, NULL);AudioServicesRemoveSystemSoundCompletion(kSystemSoundID_Vibrate); 这两个接口的用途是绑定和取消指原创 2013-01-11 18:06:30 · 8094 阅读 · 12 评论 -
iphone动态绑定示例
NSDictionary *themeInfo = nil; if ([notification isKindOfClass:[NSDictionary class]]) { themeInfo = notification; } else if ([notification isKindOfClass:[NSNotification class]]) {原创 2014-08-19 16:29:27 · 792 阅读 · 0 评论 -
coreLocation说明,作者写的很用心,收藏
http://www.jianshu.com/p/99a132609628转载 2016-05-18 13:52:30 · 765 阅读 · 0 评论 -
NSURL基本操作示例说明
http://blog.youkuaiyun.com/zhibudefeng/article/details/7920686转载 2016-05-16 16:36:35 · 1030 阅读 · 1 评论 -
关于应用程序启动,你可能不知道的东西
http://blog.youkuaiyun.com/ruglcc/article/details/50148375说明:iOS程序启动时总会调用application:didFinishLaunchingWithOptions:,在此之前还会调用application:willFinishLaunchingWithOptions.其中第二个参数launchOptions为NSDictionary类型的对象,转载 2016-05-16 15:45:46 · 1296 阅读 · 2 评论