IOS开发日志
文章平均质量分 94
kidd风
个人博客 http://www.kiddhmh.cn
展开
-
面试中的那些 Git 问题 - 基础部分
刚看了一篇关于Git方面的面试题,写的非常好,转载一下~团队协作能力一直是我们招聘开发人员的重要考核指标之一。而考核这个能力的原因很简单:一般公司都不会只有一个开发…而一旦涉及多人协作开发,良好的协作能力和习惯能显著提高整个团队的开发效率。Time is money!说到协作,面试中当然就会聊到开发人员日常最需要协作的事情,代码协作。因为 Github 在国内的流行,很多公司都已转载 2017-10-25 10:40:17 · 1418 阅读 · 0 评论 -
自定义转场动画--Swift3.0版本
转场动画这事,说简单也简单,可以通过presentViewController:animated:completion:和dismissViewControllerAnimated:completion:这一组函数以模态视图的方式展现、隐藏视图。如果用到了navigationController,还可以调用pushViewController:animated:和popViewController原创 2016-12-23 12:25:45 · 5768 阅读 · 2 评论 -
UINavigationController 自定义返回按钮导致返回手势失效解决办法
之前项目中遇到了,在这里记录下,网络找了很多,大部分写的不完成,基本不能实现。第一种方法,很简单,重新签订协议:首先,在要push的控制器中加入以下代码:override func viewDidLoad() { super.viewDidLoad() self.navigationController?.interactivePopGestureRecogniz原创 2016-12-06 16:55:05 · 1763 阅读 · 0 评论 -
iOS 根据当前触摸的位置显示出该位置的单词
#import "OXTouchTextView.h"@implementation OXTouchTextView- (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.editable = NO; } ret原创 2016-11-20 21:04:01 · 2259 阅读 · 0 评论 -
JSPatch来更新已上线的App中出现的BUG
JSPatch的作用是什么呢?简单来说:(后面有具体的操作步骤以及在操作过程中会出现的错误)1.iOS应用程序上架到AppStore需要等待苹果公司的审核,一般审核时间需要1到2周.虽然程序在上架前会经过测试人员的测试,但有时候还是不免会发生新版本上线后出现严重的bug,导致用户刚升级到新版本就出现crash,严重影响用户体验.2.这时能做的只是赶紧修复bug然后提交等待漫长的Ap原创 2016-09-27 11:47:55 · 698 阅读 · 0 评论 -
如何使用 iOS 9 的 Core Spotlight 框架
每一代 iOS 都会为全球的开发者们带来新鲜的“小玩意儿”和对现有技术进行提升。显然,最新的 iOS 9 也不例外,开发者们拥有了全新的框架和 APIs 以方便调用、这可以显著地提升应用程序的水平。Core Spotlight 框架就是其中之一,它包含了许多优秀 APIs,开发者可以很方便地应用在工程中。Core Spotlight(CS)框架属于一个更大的 API 集合 Search API原创 2016-09-20 15:09:36 · 547 阅读 · 0 评论 -
iOS开发日志 之 iOS10版本适配问题
1.系统判断方法失效在你的项目中,当需要判断系统版本的话,不要使用下面的方法:#define isiOS10 ([[[[UIDevice currentDevice] systemVersion] substringToIndex:1] intValue]>=10)它会永远返回NO,substringToIndex:1在iOS 10 会被检测成 iOS 1了,应该使用下面的这些原创 2016-09-19 17:29:56 · 3755 阅读 · 0 评论 -
kidd风的IOS日志之源代码管理工具Git的基本使用
简单的介绍下Git在应用程序开发过程中,很重要的一部分工作就是如何进行源码的版本控制。当代码出现问题时,我们就需要将代码恢复到原先正常的版本。如果是多个人共同开发一个项目,那么代码的控制就会非常复杂。幸运的是,开发者不需要自己控制这些,因为有专门的软件来负责,叫做版本控制系统。版本控制系统,或者说修改控制系统,实际上是一种检测源文件的改变并将其保存留作以后参考使用的机制(软件)。此原创 2016-02-23 20:27:30 · 1545 阅读 · 0 评论 -
kidd风的IOS日志之学习用MetalPerformanceShaders进行图像处理(模糊效果)
iOS 9在MetalKit中新增了MetalPerformanceShaders类,可以使用GPU进行高效的图像计算,比如高斯模糊,图像直方图计算,索贝尔边缘检测算法等。我最近刚开始学习Metal的使用,并做了一个高斯模糊的例子作为"HelloWorld"程序,下面分享一下我的学习成果~注意:运行该程序需要有一个系统版本为iOS9的iOS设备,因为Metal只能在真机上运行。原创 2016-02-23 13:25:26 · 1509 阅读 · 0 评论 -
IOS开发日志之CocoaPod的安装与简单使用Xcode7.2版本
一、什么是CocoaPod当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版原创 2016-02-22 20:18:14 · 1309 阅读 · 0 评论 -
IOS开发日志之Xcode一些好用的插件大全
功能强大的Xcode再配上高效的插件,必会让你的开发事半功倍。直接进入正题。Xcode插件安装方式:1、github下载插件然后用xcode打开运行一遍,然后重启xcode。2、安装插件管理Alcatraz ,通过其来安装插件不需要到github一个个下载插件来运行,统一管理插件,省时高效直观一点提醒:安装插件后需要重启xcode,xcode7以后重启xcode原创 2016-02-28 16:01:52 · 771 阅读 · 0 评论 -
Swift3.0 单例模式实现的几种方法-Dispatch_Once
今天在写项目时,需要使用单例模式,正常我们的思路是使用GCD的dispatch_once这个API来写,然而在swift3.0中,苹果已经废弃了这个方法,不过不用担心,我们可以用别的方式来实现。结合swift语言的特性,总结了以下几种写法:普通创建法静态创建法struct创建法通过给DIspatchQueue添加扩展实现注意这里我希望大家除了使用还要会调用该对应的方法原创 2016-12-26 13:48:19 · 4992 阅读 · 0 评论 -
swift报错binary operator '==' cannot be applied of two(结构体枚举如何比较大小)
刚才在写项目时,场景是这样的,封装监听网络状态的类,其中涉及几个枚举状态,联网(蜂窝数据,wifi),未联网,然后就涉及到了枚举状态的比较问题,我习惯性的直接用'=='进行比价,结果就显示一直报错,具体如下:Binary operator '==' cannot be applied to operands of type 'HttpReachability.HttpStatus' a原创 2016-12-27 11:36:00 · 6857 阅读 · 0 评论 -
iOS开发通过NSURLProtocol实现UIWebView的离线缓存(离线加载),OC版和Swift3.0版
前几天项目中,为了增加用户体验,让用户在没有网络的情况下仍然可以加载之前缓存的UIWebView,用到了离线缓存方面的技术,特此分享出来。为了考虑大家的项目语言不同,我将提供OC版本和Swift3.0版本,希望能帮助大家。NSURLProtocol介绍NSURLProtocol能够让你去重新定义苹果的URL加载系统 (URL Loading System)的行为,URL Loa原创 2016-12-26 16:44:10 · 1710 阅读 · 0 评论 -
iOS11新特性,如何适配iOS11
前言这几天抽空把WWDC的Session看了一些,总结了一些iOS11新的特性,可能对我们的App有影响,需要我们进行适配。本文作为一个总结。本文内容包括:集成了搜索的大标题栏、横向选项卡栏、Margins 和 Insets以及 UIScrollView和UITableView 的更新和功能更强大的滑动操作。一. 在UIKit’s Bars中加入的新功能WWDC转载 2017-07-26 10:03:51 · 34775 阅读 · 3 评论 -
如何适配iOS11和iPhoneX
随着iOS11正式版的推送和iPhoneX的即将到来,是时候为我们的App做新一轮的适配,下面我来总结下我们项目中遇到的一些问题。导航栏导航栏高度的变化iOS11之前导航栏默认高度为64pt(这里高度指statusBar + NavigationBar),iOS11之后如果设置了prefersLargeTitles = YES则为96pt,默认情况下还是64pt,但在iPh原创 2017-09-22 15:27:16 · 2840 阅读 · 0 评论 -
iOS开发之点击UIWebView获取被点击图片的地址并显示
加载网页时,有时候产品经理会提出一个需求:点击界面的图片,可以进行查看大图操作。下面说下我的实现思路:给 UIWebView 添加 tap手势 ,利用手势的代理方法-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch可以获原创 2017-02-08 11:44:21 · 1780 阅读 · 0 评论 -
iOS开发之音视频边下边播缓存方案
阿勒,没想到第一篇文章我就标题党了...不过,我还真没看到目前有哪个公开的实现方案有做的更好的,可能是我孤陋寡闻,如果你知道更好的方案,一定要留言告诉我,鞠躬..进入正题,这次的主要内容 理解 AVAssetResourceLoaderDelegate 的使用 缓存下载的实现 VIMediaCache 提供了哪些 API接下来会介转载 2017-04-10 10:53:00 · 8690 阅读 · 0 评论 -
iOS开发之正则表达式快速教程(NSPredicate、NSRegularExpression)
正则表达式正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎,还有java语言自带的。正则表达式这个概念最初是由Unix原创 2017-05-05 11:05:27 · 1894 阅读 · 0 评论 -
Swift 3.0中GCD的常用方法
随着苹果推出swift3.0,很多API都发生了变化,下面我就来总结下GCD的一些常用API用法。首先为了方便先定义几个属性:class ViewController:UIViewController{ /**队列*/ var myQueue:DispatchQueue? var myQueueTimer:DispatchQueue? var原创 2016-10-28 10:24:50 · 7082 阅读 · 1 评论 -
iOS开发之UITextField输入长度限制,键盘遮挡自适应方法
UITextField被用作项目中获取用户信息的重要控件,但是在实际应用中存在的不少的坑:修改keyboardType来限制键盘的类型,却难以限制第三方键盘的输入类型;在代理中限制了输入长度以及输入的文本类型,但是却抵不住中文输入的联想;键盘弹起时遮住输入框,需要接收键盘弹起收回的通知,然后计算坐标实现移动动画。对于上面这些问题,苹果提供给我们文本输入框的同时并不提供解决方案,原创 2017-03-23 16:05:40 · 848 阅读 · 0 评论 -
老生常谈之UITableView的性能优化
新的一年开始了,新的工作也开始了,刚过完年回来,感觉节后综合征还是很严重的~今早差点迟到。。。废话不多说,今天就来说说iOS最常用的控件-UITableView,基本用法就不多说了,大家应该都知道,当然对于它的优化大家也应该都有所了解。下面我就来谈谈这个老话题-UITableView的性能优化,都是一些平时总结的经验,分享给大家。1、cell复用复用很简单,这或许是所有原创 2017-02-07 11:11:29 · 22447 阅读 · 0 评论 -
iOS开发之KVO与KVC解析与实战
一、NSKeyValueCoding(KVC)1.原理 运用了一个isa-swizzling技术。isa-swizzling就是类型混合指针机制。KVC主要通过isa-swizzling,来实现其内部查找定位的。isa指针,如其名称所指,(就是is a kind of的意思),指向维护分发表的对象的类。该分发表实际上包含了指向实现类中的方法的指针,和其它数据。 比原创 2017-03-13 10:54:55 · 638 阅读 · 0 评论 -
Swift面试题,看这些就够了
最近看到一篇写swift面试题的文章,写的非常好,特此翻译过来供大家查阅,每个问题都会提供答案。书面问题初学者Question #1请用更好的方式写这个for循环:for var i = 0; i 5; i++ { print("Hello!")}Answer:for _ in 0...4 {翻译 2017-03-03 15:06:15 · 13104 阅读 · 2 评论 -
iOS 崩溃日志收集及分析
最近几天,项目中在增加推送功能,选用的极光推送SDK,相信大家也都用过,官方文档的集成步骤很详细,集成也很容易。但是这跟今天的主题有什么关系呢??? 黑人问号???别急,下面就来说说我今天的遭遇。坑~~~话说,由于iOS10之后,苹果对推送进行了重大更新,主要是新增了 User Notifications Framework框架, 具体信息可以查看苹果官方文档,这里就不多解释了。于是我就突原创 2017-01-11 23:35:26 · 17605 阅读 · 1 评论 -
kidd风的IOS开发日志之IOS常用的IOS第三方资源
常用的IOS第三方资源1:基于响应式编程思想的oc地址:https://github.com/ReactiveCocoa/ReactiveCocoa2:hud提示框地址:https://github.com/jdg/MBProgressHUD3:XML/HTML解析地址:https://github.com/topfunky/hpple4原创 2016-03-01 00:36:48 · 760 阅读 · 0 评论 -
kidd风的IOS日志之UICollectionView之介绍使用篇
实现垂直方向的单列表来说,使用UITableView足以;若是需要构建横向滑动列表、gridView等直线型布局,则使用UICollectionView+UICollectionViewFlowLayout搭建最合适;更复杂的布局,则可以使用UICollectionView+自定义Layout来实现。而这篇博客就来介绍一下UICollectionView。首先,来了解一下UICol原创 2016-03-05 15:32:41 · 376 阅读 · 0 评论 -
kidd风的IOS日志之摄像头以及相册的调用
UIImagePickerController拍照和视频录制下面看一下在iOS如何拍照和录制视频。在iOS中要拍照和录制视频最简单的方法就是使用UIImagePickerController。UIImagePickerController继承于UINavigationController,前面的文章中主要使用它来选取照片,其实UIImagePickerController的功能不仅如此,它原创 2016-02-25 13:36:45 · 435 阅读 · 0 评论 -
kidd风的IOS日志之IOS9 视频播放控制器(AVPlayer)
在Xcode7.2中如果你使用MPMoviePlayerController,会报以下警告:因为IOS9.0之后,就停止更新维护MPMoviePlayerController,但仍然是可以用的,不过系统建议我们使用AVKit下的AVPlayer来进行视频播放。MPMoviePlayerController足够强大,几乎不用写几行代码就能完成一个播放器,但是正是由于它原创 2016-02-25 13:23:52 · 2915 阅读 · 0 评论 -
kidd风的IOS日志之使用AVFoundation生成缩略图
通过前面的方法大家应该已经看到,使用MPMoviePlayerController来生成缩略图足够简单,但是如果仅仅是是为了生成缩略图而不进行视频播放的话,此刻使用MPMoviePlayerController就有点大材小用了。其实使用AVFundation框架中的AVAssetImageGenerator就可以获取视频缩略图。使用AVAssetImageGenerator获取缩略图大致分为三个步原创 2016-02-25 09:31:38 · 1047 阅读 · 0 评论 -
kidd风的IOS日志之播放音乐(MPMoviePlayerViewController和MPMoviePlayerController)
MPMoviePlayerViewController和MPMoviePlayerControllerMPMoviePlayerViewController和MPMoviePlayerController 使用场合不一样MPMoviePlayerViewController是在iOS3.2以后的平台上使用。MPMoviePlayerController在3.2之前使原创 2016-02-25 09:07:08 · 663 阅读 · 0 评论 -
kidd风的IOS日志之利用dispatch_once创建单例
利用dispatch_once创建单例无论是爱还是恨,你都需要单例。实际上每个iOS或Mac OS应用都至少会有UIApplication或NSApplication.什么是单例呢?Wikipedia是如此定义的:在软件工程中,单例是一种用于实现单例的数学概念,即将类的实例化限制成仅一个对象的设计模式。或者我的理解是:单例是一种类,该类只能实例化一个对象。尽管这原创 2016-02-25 09:04:06 · 375 阅读 · 0 评论 -
kidd风的IOS日志之多线程(NSThread)的使用
1、简介:1.1 iOS有三种多线程编程的技术,分别是: 1.、NSThread2、Cocoa NSOperation (iOS多线程编程之NSOperation和NSOperationQueue的使用) 3、GCD 全称:Grand Central Dispatch( iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用)原创 2016-02-24 13:58:44 · 675 阅读 · 0 评论 -
kidd风的IOS日志之多线程(NSOperation)的基本操作
iOS开发多线程篇—NSOperation基本操作一、并发数(1)并发数:同时执⾏行的任务数.比如,同时开3个线程执行3个任务,并发数就是3(2)最大并发数:同一时间最多只能执行的任务的个数。(3)最⼤大并发数的相关⽅方法- (NSInteger)maxConcurrentOperationCount;- (void)setMaxConcurrentOperationCou原创 2016-02-24 09:33:41 · 588 阅读 · 0 评论 -
kidd风的IOS日志之多线程(NSOperation)的介绍与使用
IOS开发多线程篇—NSOperation简单介绍一、NSOperation简介1.简单说明NSOperation的作⽤:配合使用NSOperation和NSOperationQueue也能实现多线程编程NSOperation和NSOperationQueue实现多线程的具体步骤:(1)先将需要执行的操作封装到一个NSOperation对象中(2)然后将NSOp原创 2016-02-24 09:15:15 · 480 阅读 · 0 评论 -
kidd风的IOS日志之GCD详解
iOS开发多线程篇—GCD介绍一、简单介绍1.什么是GCD?全称是Grand Central Dispatch,可译为“牛逼的中枢调度器”纯C语言,提供了非常多强大的函数 2.GCD的优势GCD是苹果公司为多核的并行运算提出的解决方案GCD会自动利用更多的CPU内核(比如双核、四核)GCD会自动管理线程的生命周期(创建线程、调原创 2016-02-24 01:32:12 · 612 阅读 · 0 评论 -
kidd风的IOS日志之iOS开发多线程篇—多线程简单介绍
一、进程和线程1.什么是进程 进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内比如同时打开QQ、Xcode,系统就会分别启动2个进程通过“活动监视器”可以查看Mac系统中所开启的进程 2.什么是线程1个进程要想执行任务原创 2016-02-24 01:17:06 · 504 阅读 · 0 评论 -
kidd风的IOS日志之UIApplication详解
一、UIApplication1.简单介绍1)UIApplication对象是应用程序的象征,一个UIApplication对象就代表一个应用程序。(2)每一个应用都有自己的UIApplication对象,而且是单例的,如果试图在程序中新建一个UIApplication对象,那么将报错提示。(3)通过[UIApplicationsharedApplicati原创 2016-02-24 00:55:52 · 488 阅读 · 0 评论 -
kidd风的IOS日志之视图之间的切换详细介绍
概述在iOS开发中视图的切换是很频繁的,独立的视图应用在实际开发过程中并不常见,除非你的应用足够简单。在iOS开发中常用的视图切换有三种,今天我们将一一介绍:UITabBarControllerUINavigationController模态窗口UITabBarControlleriOS三种视图切换的原理各不相同:UITabBarController:以平行的方原创 2016-02-26 01:07:28 · 518 阅读 · 0 评论 -
kidd风的IOS日志之触摸事件,手势识别,摇晃事件的详解
概览iPhone的成功很大一部分得益于它多点触摸的强大功能,乔布斯让人们认识到手机其实是可以不用按键和手写笔直接操作的,这不愧为一项伟大的设计。今天我们就针对iOS的触摸事件(手势操作)、运动事件、远程控制事件等展开学习:iOS事件简介触摸事件手势识别运动事件远程控制事件iOS事件在iOS中事件分为三类:触摸事件:通过触摸、手势进行触发(例如手指点击、缩放)原创 2016-02-26 01:17:57 · 1168 阅读 · 0 评论