自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 收藏
  • 关注

原创 谈谈iOS多线程的锁

前言iOS开发中由于各种第三方库的高度封装,对锁的使用很少,刚好之前面试中被问到的关于并发编程锁的问题,都是一知半解,于是决定整理一下关于iOS中锁的知识,为大家查缺补漏。目录第一部分: 什么是锁第二部分: 锁的分类第三部分: 性能对比第四部分: 常见的死锁第五部分: 总结(附Demo)正文一、什么是锁在过去几十年并发研究领域的出版物中,锁总是扮演着坏人的角色,锁背负的指控包括引起死锁、锁封护(lu

2017-11-06 10:37:16 2043

原创 App优化之路-IconFont

前言关于性能优化这个话题很大,涉及面可以很广,也可以很深入,本人能力有限,不会给大家讲特别难懂,特别底层的东西,都是我们开发能着手去做的点,大家都在讲性能优化,但对于项目经验不够丰富的朋友很难有一个概念,做优化的时候也会比较茫然,这里我会就自己项目中的一些实践给大家一些启发。今天主要讲解关于缩小iOS体积包中关于减小图片占App体积的方法,使用IconFont。介绍IconFont技术起源于Web领

2017-10-09 22:21:11 582

转载 VimTutor中文版

================================================================================      欢     迎     阅     读   《 V I M  教  程 》   ——     版本 1.5      ===================================================

2017-09-01 11:30:54 636

原创 手把手教你构建自己的CocoaPods仓库

CocoaPods简介每种语言发展到一个阶段,就会出现相应的依赖管理工具,例如Java语言的Maven,nodejs的npm。随着iOS开发者的增多,业界也出现了为iOS程序提供依赖管理的工具,它的名字叫做:CocoaPods。 CocoaPods项目的源码在Github上管理。该项目开始于2011年8月12日,经过多年发展,现在已经成为iOS开发事实上的依赖管理标准工具。开发iOS项目不可避免地

2017-08-06 21:24:15 467

原创 iOS测试与集成

前言随着测试在软件开发周期中越来越受到重视,BAT大部分开始取消了测试工程师职位,全部变成了测试开发职位。需要在有测试能力的基础上兼备开发能力;另一方面自动化测试成为趋势,利用开发的技巧解决测试中的问题以提高测试效率,降低QA与RD的人力比。目录苹果官方测试工具单元测试的开源库验收测试的开源库自动化测试平台持续集成平台苹果官方测试工具1. XCTest① XCTest是苹果在 iOS7

2017-05-23 21:12:38 3115

原创 从Swift桥接文件到Clang-LLVM

前言今天在Swift工程中不小心创建了一个OC文件,于是乎提示我创建一个桥接文件,那么为什么需要创建桥接文件呢,它的原理又是什么呢?打开百度一搜,全是教你怎么创建桥接文件的,似乎找不到答案~LVVM - Low Level Virtual Machine Clang - C Lange Family Frontend for LVVM编译器探究GCCGNU编译器套件(GNU Compiler

2017-05-19 02:09:50 1969

原创 iOS获取设备唯一标识

前言目前市面应用普遍采用用户体验,涉及到部分重要功能时候才提醒用户注册账户,而用户之前的操作,比如收藏,点赞,关注等内容需要同时关联进注册的账户,那么根据什么记录用户的操作信息就尤为重要。下面就列出我之前收集资料总结的方案。UDIDUDID(Unique Device Identifier),iOS 设备的唯一识别码,是一个40位十六进制序列(越狱的设备通过某些工具可以改变设备的 UD

2017-05-17 20:58:24 476

原创 iOS 10 的适配问题

前言最近闲来无事,刚好看到之前做的一些关于iOS10的适配问题的笔记,下面就来做一下归纳1.系统判断方法失效在你的项目中,当需要判断系统版本的话,不要使用下面的方法:#define isiOS10 ([[[[UIDevice currentDevice] systemVersion] substri ngToIndex:1] intValue]>=10)它永远返回NO,substring’

2017-05-16 14:07:00 489

原创 深入理解Runloop,看我一篇就够了

前言RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念,为了让大家更加快速融入,请先一段代码:+ (NSThread *)networkRequestThread { static NSThread *_networkRequestThread = nil; static dispatch_once_t oncePredicate; dispatc

2017-05-15 14:25:59 15421 1

原创 史上最全cocoaPods安装及问题解决

前言近期由于入手一台iMac,要重新配置许多东西,众所周知cocoaPods是iOS开发的利器,废话不多说,下面开始安装吧。a.使用RVM对Ruby进行升级先查看现在的Ruby版本号 输入命令:ruby -v安装RVM RVM:Ruby Version Manager, Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset) a.先输入: curl -

2017-05-14 13:14:09 735

原创 Swift之协议

前言如果你之前使用objective-c编写iOS程序肯定对协议都不陌生,在Swift中苹果将protocol这种语法发扬的更加深入和彻底。Swift中的protocol不仅能定义方法还能定义属性,配合extension扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议了。协议中定义范型,属性,方法协议的定义 协议为方法,属性,以及其他特性的任务需求或功

2017-05-07 22:08:24 3041 1

原创 Swift之集合

前言集合(Collection)是建立在序列(sequence)上层的类型,它添加了可重复遍历元素和根据下标访问元素的功能。为了具体说明Swift中的集合实现原理。我们会实现一个自己的集合。可能Swift标准库中没有实现的最有用的容器类型就是队列(queue)了。Swift的数组可以很容易的拿来当栈使用——append就是压栈,removeLast就是弹栈。但把数组当队列用就不合适了。你可以把app

2017-05-05 23:13:23 623

原创 Swift说

前言对于从别的语言转到Swift的程序员来说,不管你原来使用哪种语言,Swift对你来说总是似曾相识。底层的、精确到比特位的操作看上去和C很类似而且甚至和C语言一样高效,同时还不会产生很多未定义行为。对于Ruby开发者来说,轻量的闭包和map、filter函数都是自己很熟悉的。C++工程师看到Swift的范型一定不会感到陌生,因为这就是C++中的模板(template)。不同的是,Swift会

2016-10-01 18:30:17 350

转载 iOS视频直播又一大神开源项目、RTMP 协议

随着直播市场的火热,市场大军都逐步进入直播市场 ,腾讯旗下的NOW直播也不例外先说说直播设计底层一 、流媒体1 - 伪流媒体1.1 扫盲:边下载边播放1.2 伪流媒体:视频不是实时播放的,先把视频放在数据库,再供客户端访问,比如:优酷,爱奇艺等1.3 特点:边下边存,文件会保存.遵守了 HTTP 协议,但是没有遵守 RTMP 和 HLS

2016-08-21 01:40:21 2106

原创 iOS : Zbar几个经典问题的解决办法

iphone 开发中使用zbar时遇到的几个典型问题解决方法。 在近期的一个ios项目中使用到了一个二维码扫描库(Qrcode)--ZBar, 期间遇到2个问题。 1. zbar下载后使用其libzbar.a 发现无法再arm7上运行。2. zbar使用过程中,如果多次打开摄像头扫描Qrcode,会出现memory leak problem, 导致其内存指数型增长,大概8次

2016-08-09 20:20:58 1979

转载 iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit

(一) iOS 直播类APP开发流程分解: 1 . 音视频处理的一般流程:数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示1、数据采集:摄像机及拾音器收集视频及音频数据,此时得到的为原始数据涉及技术或协议:摄像机:CCD、CMOS拾音器:声电转换装置(咪头)、音频放大电路2、数据编码:使用相关硬件或软件对音视频原始数据进行编

2016-07-29 01:16:31 6869

原创 iOS:YYModel的简单使用

简单的 Model 与 JSON 相互转换// JSON:{ "uid":123456, "name":"Harry", "created":"1965-07-31T00:00:00+0000"}// Model:@interface User : NSObject@property UInt64 uid;@property NSString *name;

2016-07-24 00:33:23 6820

原创 自定义重排的CollectionView

一个简单的SDK制作是很容易的,复杂的sdk其实就和复杂化的应用一样,都是从简单开始的,这里介绍一下sdk的简单制作。步骤:1.创建sdk,公开文件2.编译、获取sdk文件3.导入工程,配置文件4.解决错误,完成 1.创建sdk,公开文件然后起个需要的名字

2016-07-21 00:01:24 544

原创 iOS中的屏幕适配之Masonry和SnapKit

尽管iPhone的屏幕适配没有像安卓那样因种类繁多的手机以及屏幕分辨率的差异而带来的繁琐的屏幕适配,但是随着苹果发布越来越多的手机,我们也经历着从计算frame到使用Autoresizing进行适配(Autoresizing的核心思想是:参照父容器来设置子空间的frame),而如今App中的控件不仅要求能根据控件父子关系来设置相对位置,也要求能根据“任意”控件直接的关系来设置位置,出现了现在的使用

2016-07-18 17:51:29 5035

原创 UIScrollView添加子控件约束的一些小总结

之前在使用AutoLayout给UIScrollView进行布局的时候,总会出现点这样那样莫名其妙的问题.我也曾跳坑两次,挣扎许久最后都以放弃storyboard改为代码实现而告终.今天终得正解,遂拿出来说说.先从最基础的开始,我们试着在storyboard上添加一个UIScrollView,并且在内部添加一个和它一样大的UIImageView.首先,拖一个UIScrollView到sto

2016-07-13 22:10:47 6211

原创 iOS提示框之 MBProgressHUD 与 SVProgressHUD

提示框,进度提示,加载中提示等等,无论怎样,你总是需要提示框来指示某个状态正在后台努力进行中.一个合适的提示框,更多的是用来增强用户体验.把最多的时间,用来做更核心的事;把这些不是非常重要的事,你应该试着使用一个成熟稳定的第三方来解决.MBProgressHUD还是 SVProgressHUD ?许多时候,选择都是很重要的,但是总是要做出选择.每个人考虑的因素和角度不同,结论或许也不同

2016-07-11 23:35:53 8911

转载 打造轻量级 tableViewController 之抽离 DataSource/Delegate

前言UITableView/UICollectionView 是我们开发中使用最为频繁的两个控件。关于其使用的实践网上已经有很多优秀的总结了,所以我不打算再啰嗦了。今天要讨论的问题基于 objc.io 的一遍文章 Lighter View Controllers,此文讲述如何通过抽取频繁出现的配置类型的代码到专门的一个 DataSource/Delegate 里面来为 Cont

2016-07-09 19:47:54 1814

原创 详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形…)

前言:本篇文章不是分享collectionView的详细使用教程, 而是属于比较’高级’的collectionView使用技巧, 阅读之前, 我想你已经很熟悉collectionView的基本使用, 如果不是很熟悉, 建议在以后熟悉一下. 那么在本篇结束后, 你也能够很轻松的使用collectionView来实现, 当下比较流行和比较炫酷的效果以及你想要自己实现的其他的效果.这里就实现三种

2016-06-20 21:19:34 1035

原创 iOS 常用小技巧大杂烩(上)

1,打印View所有子视图po[[selfview]recursiveDescription]2,layoutSubviews调用的调用时机* 当视图第一次显示的时候会被调用* 当这个视图显示到屏幕上了,点击按钮* 添加子视图也会调用这个方法* 当本视图的大小发生改变的时候是会调用的*

2016-06-05 22:38:45 576

原创 苹果的Apple Pay学习

先简单介绍一下1.首先呢来说一说Apple Pay 的使用前提1)设备的支持(iPhone6以上版本)    iPhone设备 支持手机app内支付 店内支付    Apple Watch 支持店内支付    iPad 支持app内支付2)系统的支持(iOS8.0+版本,最好升级到当前最新版本iOS9.2)(iOS9.2,Apple

2016-05-31 23:54:03 1057

转载 MVVM奇葩说

一直想聊聊这个话题,也有朋友跟我留言,让我讲讲MVVM,只可惜一直没整明白,不敢轻易下笔。针对MVVM,网上有很多不错的文章,比如MVVM介绍、被误解的 MVC 和被神化的 MVVM以及Look at MVVM from a different perspective等等。文章前我想先提几个问题:MVVM到底是什么?它和MVC有什么区别?

2016-05-27 00:00:32 369

原创 Swift中的内存管理

之前用Swift写了一个App,已经在App Store上架了。前两天更新了一些功能,然后用Instruments检查的时候,发现有内存泄漏问题。有些同学可能觉得奇怪,Swift不是使用ARC自动管理内存的么,怎么也会发生内存泄漏呢。是会的,但几乎都是由于操作不当造成循环引用(strong reference cycle/retain cycle)导致的。ARC与GC

2016-05-18 22:22:06 422

原创 iOS之深入了解控制器View的加载

我们会遇到这样的问题,loadView有什么作用,它与viewDidLoad有何区别,首先我们得知道,控制器view是通过懒加载的方式进行加载的,即用到的时候再加载。

2016-05-15 08:52:14 1404

原创 swift3.0的改变

Swift在这2年的时间内,发展势头迅猛,在它开源后,更是如井喷一样,除了 iOS、mac 平台,还支持了 Linux。 而今年下半年, Swift 3.0 也会随之发布。https://github.com/apple/swift-evolution详细介绍了3.0的特性。 这个版本的主要目标增强语言的二进制接口和标准库的稳定性,作为这个过程的一部分,我们将改善swift语言以提

2016-05-10 22:34:50 1860

原创 iOS开发中xcode错误和异常处理

在开始这一节的内容之前,我想先阐明两个在很多时候被混淆的概念,那就是异常 (exception) 和错误 (error)。在 Objective-C 开发中,异常往往是由程序员的错误导致的 app 无法继续运行,比如我们向一个无法响应某个消息的 NSObject 对象发送了这个消息,会得到 NSInvalidArgumentException 的异常,并告诉我们 "unre

2016-05-08 19:39:05 1646

原创 iOS开发中常用到的加密方式

1 base641.1 简介Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节数组。以3个字节为一组。按顺序排列24位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是3的整倍数,也就

2016-05-07 00:37:28 5241

原创 实现当UILable的内容超出其范围后自动滚动效果

本文主要介绍 【当UILabel的内容超出其自身的宽度范围后,进行互动展示的效果】,我们先来看一下Demo的效果图。实际实现起来并不十分繁杂,在这里,为了开发的效率,我们使用了一个已经封装好的UILabel控制类CBAutoScrollLabel:点击“阅读原文”下载。在写代码之前,我们还有一个准备工作,在stroyBoard中,找到

2016-05-05 22:47:50 923

原创 浅谈IOS数据存储

一、沙箱SandBox和Bundle的概念 个人觉得要弄懂数据存储首先应该明确沙箱SandBox和Bundle的概念。 沙箱本意本来就是为了说明程序资源和外界的隔离性。强调隔离! IOS中就是为了说明各个应用程序之间的关系是孤立的,IOS应用程序只能在本应用程序中创建的文件系统中读取文件,不可以去其它地方访问,此区域称为沙盒,所有的非代码文件都要保存在此,例如图像,图标,声音,映像

2016-05-02 19:26:25 427

原创 iOS开发过程中的各种tips

前言 iOS开发过程中,总有那么一些个小问题让人纠结,它们不会让程序崩溃,但是会让人崩溃。除此之外,还将分享一些细节现在我通过自己的总结以及从其他地方的引用,来总结一下一些常见小问题。 本篇长期更新,多积累,多奉献,同时感谢大家提出的宝贵更新意见! iOS高级开发实战讲解 这是我在网上搜索到的iOS高级开发实战讲解,由于原文不是很方便浏览,所以我在这里整理一部分出来,方便查阅,同时谢谢

2016-04-29 22:06:20 520

转载 Macbook SSD硬盘空间不够用了?来个Xcode大瘦身吧!

最近突然发现我的128G SSD硬盘只剩下可怜的8G多,剩下这么少的一点空间连Xcode都无法更新。怎么办呢?如果升级硬盘的话,第一要花钱,毕竟SSD硬盘还是不便宜,第二是升级比较麻烦,要拆机和迁移系统什么的特别花时间精力,老了真不愿瞎折腾了,只能想办法能不能清除点空间来。寻找大块头首先想到的就是能不能删掉安装在SSD硬盘里面平时不用或者很少用到软件

2016-04-24 19:45:12 1173

原创 Objective-C ARC单例模式

什么是单例模式?单例模式是一个类在系统中只有一个实例对象。通过全局的一个入口点对这个实例对象进行访问。在iOS开发中,单例模式是非常有用的一种设计模式。如下图,是一个简单的例模式的UML类图。 iOS SDK中也有许多类使用了单例模式,例如,UIApplication:当程序启动的时候,会调用UIApplicationMain方法,在该方法中,会实例化一个UIApplica

2016-04-23 20:01:09 456

原创 Swift 2.0 初探

转眼间,Swift已经一岁多了,这门新鲜、语法时尚、类型安全、执行速度更快的语言已经渐渐的深入广大开发者的心。我同样也是非常喜爱这门新的编程语言。 今年6月,一年一度的WWDC大会如期而至,在大会上Apple发布了Swift 2.0,引入了很多新的特性,以帮助开发者能更快,更简单的构建应用。我在这里也说道说道Swift 2.0中值得大家注意的新特性。 guard语句 guard语句和i

2016-04-21 22:47:29 1367

原创 iOS多边形按键的创建

前几天项目需要,要做一个楼盘或者户型图的原生交互页面, 不清楚有没有更简单直白又高级的方法,我第一个想到的是创建一堆 多边形按钮。 所以我们就需要一个抽象的类,可以由贝赛尔曲线创建按键,是UIButton的子类 内容如下,如果大家有好的方案,请不吝赐教: 按键抽象类头文件:按键抽象类实现文件在viewController中创建并使用这个按键类:按键的大小,根据创

2016-04-20 23:53:25 446

原创 iOS设置图片最大尺寸

经常遇到类似上传头像、社交分享等操作的时候,需要对图片进行裁切,一般需要限制一个最大值,来限制图片既要维持宽高比例,又要让宽高都小于这个最大值下面这个方法即可满足需求,当宽高都小于最大值的时候,不对图片进行压缩大小。当图片是竖排版(高>宽)的时候,把图片的高压缩到设置的最大值,同时宽按比例压缩到对应大小。同理,当图片是横版(高压缩图片的原理,是利用Core Graphics来重

2016-04-18 20:55:37 1155

原创 iOS9横竖屏设置的处理方法和实例讲解

在一般的视频类APP播放的时候都会支持横屏,这样做的好处就是便于观看。你的项目中支持横屏吗?我们一起了解一下,在iOS9中横竖屏设置的处理方法吧!支持横竖屏配置在iOS6以后,如果APP需要支持横屏,需要在xcode设置中General里面进行勾选配置:配置完成之后,我们可以看一下Info.plist里面的Supported interface orientatio

2016-04-16 20:00:41 655

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除