自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

哈雷的博客

Write the code, Change the World!

  • 博客(162)
  • 资源 (7)
  • 收藏
  • 关注

原创 RunLoop总结:RunLoop的应用场景(四)

今天要介绍的RunLoop使用场景很有意思,在做长期项目,需要跟踪解决用户问题非常有用。 使用RunLoop 监测主线程的卡顿,并将卡顿时的线程堆栈信息保存下来,下次上传到服务器。参考资料关于今天要介绍的使用RunLoop 监测主线程卡顿的资料如下: * 微信iOS卡顿监控系统 (这篇文章要首先阅读,了解有哪些情况会引起主线程卡顿,监测到卡顿后怎么处理等) * 监控卡顿的方法 (使用RunLo

2016-12-15 10:04:31 5748

原创 Xcode 调试技巧 --常用命令和断点

Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令。而这些调试技巧也经常会在面试中问到,所以不知道的就来看看吧。 调试命令在上图中,右侧绿色区域就是Log 输出区,在 Log 输出区可以使用一些命令,来辅助调试。 那有哪些调试命令呢? 想要看所有的调试命令,可以在上图的右侧区域输入help,就会列出所有的调

2016-12-12 17:39:15 6293 1

翻译 (译)Objective-C 类属性

翻译自:Objective-C Class Properties 译者:Haley_Wong由于Swift 3.0 出了太多令人兴奋的新特性,人们很容易忽略 Objective-C中的小改动。苹果展示Objective-C 很可能是为了提高Swift互操作性(译者注:互操作性主要是指OC代码与Swift代码相互转换),但是仍然很欢迎开发者用Objective-C来完成工作。 在这篇文章中,我们就

2016-12-12 09:12:23 4368 1

原创 RunLoop总结:RunLoop的应用场景(三)

今天要讲的RunLoop的应用场景可能太简单了,所以东西比较少。因为跟UITableView、UICollectionView等的滑动优化有关,就顺便总结一下会影响UITableView、UICollectionView等视图滑动流畅的因素。参考资料好的书籍都是值得反复看的,那好的文章,好的资料也值得我们反复看。我们在不同的阶段来相同的文章或资料或书籍都能有不同的收获,那它就是好文章,好书籍,好资料

2016-12-06 10:34:53 10769

翻译 (译)快速指南:用UIViewPropertyAnimator做动画

翻译自:QUICK GUIDE: ANIMATIONS WITH UIVIEWPROPERTYANIMATOR 译者:Haley_WongiOS 10 带来了一大票有意思的新特性,像 UIViewPropertyAnimator,它是一个改善动画处理的全新的类。 这个视图属性动画完全颠覆了我们已经习惯的流程,能够为动画逻辑添加更精细的控制。一个简单的动画让我们来看看如何通过一个简单的动画改变视图

2016-12-04 11:26:16 2936

原创 RunLoop 总结:RunLoop的应用场景(二)

上一篇讲了使用RunLoop保证子线程的长时间存活,而不是执行完任务后就立刻销毁的应用场景。这一篇就讲述一下RunLoop如何保证NSTimer在视图滑动时,依然能正常运转。参考资料好的书籍都是值得反复看的,那好的文章,好的资料也值得我们反复看。我们在不同的阶段来相同的文章或资料或书籍都能有不同的收获,那它就是好文章,好书籍,好资料。 关于iOS 中的RunLoop资料非常的少,以下资料都是非常好

2016-12-02 17:25:08 2197

原创 RunLoop 总结:RunLoop的应用场景(一)

参考资料好的书籍都是值得反复看的,那好的文章,好的资料也值得我们反复看。我们在不同的阶段来相同的文章或资料或书籍都能有不同的收获,那它就是好文章,好书籍,好资料。 关于iOS 中的RunLoop资料资料非常的少,以下几篇文章是总结的非常好的。CF框架源码(这是一份很重要的源码,可以看到CF框架的每一次迭代,我们可以下载最新的版本来分析,或与以下文章对比学习。目前最新的是CF-1153.18.ta

2016-12-02 11:54:32 10765

翻译 (译)openURL 在 iOS10中已弃用

翻译自:openURL Deprecated in iOS10 译者:Haley_Wong苹果在iOS 2 推出了 openURL:方法 作为一种打开外部链接的方式。而与之相关的方法 canOpenURL: 在iOS 9隐私控制里也禁止查询设备中已安装的App。 苹果在iOS 10 中已经弃用了openURL:这个旧方法,用openURL:options:completionHandler:来代替

2016-11-25 10:27:29 17423

原创 设计模式中的设计原则

先来抛一个问题,设计模式到底有几个原则?翻了三本书《设计模式之禅》、《设计模式:可复用的面向对象软件元素》、《Head First 设计模式》,也看了不少博客和关于设计模式原则的文章。关于设计模式有几大原则,似乎没有严格的定论,有的说6大设计原则,有的说7大设计原则,《Head First》中更是提到了9个设计原则。

2016-11-22 17:52:22 863

原创 设计模式简介

一直想总结一下设计模式,已经拖了大半年了,今天正式开始吧。什么是设计模式?设计模式(Design pattern)是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。 设计模式代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

2016-11-21 17:29:29 793

原创 Git 处理tag和branch的命令

最近想给GitHub 上的项目设置tag,可是使用GitHub Desktop,找了一圈都没找到快速设置Tag 的地方,最后只能通过终端命令来添加了。 想要查看Git 的命令,可以使用git --help可是大致看一下git的命令

2016-11-19 14:24:12 12609 1

原创 iOS 中隐藏UITableView最后一条分隔线

最近在做弹出菜单的时候,使用到了FTPopOverMenu,遇到了箭头向下时,最后一根分割线十分不美观的问题。 由于这种菜单一般是不能滚动的,即设置了UITableView的滚动属性为NO。 我想了一种方法,是在最后一根分割线上添加一个视图,将其盖住。

2016-11-18 11:14:44 8096

转载 iOS-改变UITextField的Placeholder颜色的三种方式

转自:http://blog.csdn.net/mazy_ma/article/details/51775670有时,UITextField自带的Placeholder的颜色太浅或者不满足需求,所以需要修改,而UITextField没有直接的属性去修改Placeholder的颜色,所以只能通过其他间接方式去修改。例如:系统默认的Placeholder颜色太浅 需要加深颜色,或者改变颜色

2016-11-16 13:18:18 34970

转载 iOS 中捕获截屏操作

转自:iOS知识小集在iOS 7后,苹果提供了UIApplicationUserDidTakeScreenshotNotification通知来告诉App用户做了截屏操作。

2016-11-12 13:55:26 3328

转载 iOS中的NSURLProtocol

转自:iOS知识小集NSURLProtocol类(注意,这个不是协议)经常用于实现一些URL Loading System相关的黑魔法。它可以拦截URL Loading System相关的网络请求,如UIWebView,NSURLSession、MPMoviePlayer等,以自定义一些操作,如自定义网络请求的响应、缓存、重定向网络请求(将域名重定向到IP地址)等。

2016-11-12 12:42:23 831

转载 iOS 中的block异常

转自:iOS 知识小集我们在调用block时,如果这个block为nil,则程序会崩溃,报类似于EXC_BAD_ACCESS(code=1, address=0xc)异常【32位下的结果,如果是64位,则address=0x10】。如图1,这个异常表示程序在试图读取内存地址0xc的信息时出错。在定义一个block时,编译器会在栈上创建一个结构体,类似于图2的结构体。

2016-11-12 12:14:30 7012

转载 iOS 中的类属性

转自:iOS 知识小集从Xcode 8开始,LLVM已经支持Objective-C显式声明类属性了,这是为了与Swift中的类属性互操作而引入的。在WWDC 2016 What’s New in LLVM 网页链接 里面有如图1这样一段话。创建一个类属性很简单,主要有以下几个步骤: 1. 使用@property (class)来声明一个类属性; 2. 为类属性创建一个存储变量,通常为全局变量;

2016-11-12 12:08:18 10015 5

转载 iOS应用启动时间

转自:iOS 知识小集 如果我们想知道程序启动的时间,则可以在工程的scheme中添加环境变量DYLD_PRINT_STATISTICS,如图1所示。这样在调试时,可以在控制台打印出程序启动过程中各个阶段所消耗的时间。我们运行程序就可以看到应用的启动时间,每个阶段的耗时。

2016-11-12 00:09:30 2452

原创 iOS遍历数组的同时删除元素

我们在遍历可变数组时,最好不要做删除数组中元素的操作。 因为删除操作可能会引起数组容量的变化,导致数组越界等问题。 以前在使用for循环遍历的时候遇到过这个问题。 当时的做法是使用enumerateObjectsUsingBlock: ,但是这次又遇到这个问题时,顺便好好的测试了一下 for、for in、enumerateObjectsUsingBlock:。 实验结果如下:

2016-11-11 23:23:28 27988

转载 Xcode 中的断言

在Xcode 4.2以后,在release版本中断言是默认关闭的,这是由宏NS_BLOCK_ASSERTIONS来处理的。也就是说,当运行release版本时,所有的断言调用都是无效的。如果想在release环境下打开断言(当然你一定不想这么做的),则可以在PROJECT的Build Settings中,修改Enable Foundation Assertions的配置,如下图所示:

2016-11-11 22:14:37 1933

原创 Mac 下 查看 使用某端口的进程和关闭该进程的命令

查看使用某端口的进程最简单的命令是:lsof -i :端口号如果要使用管理员权限那么就是:sudo lsof -i :端口号所以查看 使用某端口号3000的进程可以使用:lsof -i :3000也可以使用:sudo lsof -i :3000终端的结果如下:HarveydeMac-mini:~ harvey$ sudo lsof -i :3000COMMAND PID USER FD

2016-11-10 15:33:46 25511

原创 iOS 应用提交到iTunes Connect,显示"正在处理"后消失不见

打包上传iTunes Connect 成功后,进入iTunes Connect 会看到如下的构建信息: 可是,过一会再刷新该页面,构建的版本就消失了。出现如上所述的情况,主要目前已知的有两种原因: 1、支持iOS 10及以后的应用,使用到一些权限,必须在plist文件中添加对应的key,以及描述信息。 2、应用中使用到了一些私有API(包括第三方库中使用到私有API)。以上两种情况,一般情

2016-11-08 11:23:23 6607 1

转载 iOS 应用打包命令一览

文章转载自:http://www.jianshu.com/p/5d59966eaecc文章排版部分根据自己的理解做了一些修改。各种命令的简介使用命令打包iOS 应用一般会用到 xcodebulid 和 xcrun。 xcodebuild主要是用来编译工程。 xcrun 则是打包出ipa安装包。 altool 适用于提交到AppStore 的。想要知道更多关于xcodebuild 命令参数,则可

2016-11-08 11:01:36 4167 1

原创 算法之路(三)----查找斐波纳契数列中第 N 个数

算法题目 查找斐波纳契数列中第 N 个数。 所谓的斐波纳契数列是指: * 前2个数是 0 和 1 。 * 第 i 个数是第 i-1 个数和第i-2 个数的和。 斐波纳契数列的前10个数字是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34 …分析斐波那契数列满足公式f(n) = f(n-1) + f(n-2),n > 0。这里我们的第一想法

2016-11-02 11:10:07 1980

原创 Objective-C 中如何测量代码的效率

背景在我们编程的时候,可能经常会有一些疑问: * 我们写的某个方法的执行效率是多少? * 方法 A 和 方法 B 哪个更快?因此,我们不可避免的要用到一些方法来计算代码的执行效率。计算代码的执行效率可以使用的API有: * NSDate * CFAbsoluteTimeGetCurrent * CACurrentMediaTime * dispatch_benchmarkNSDate

2016-11-01 21:01:32 1577

原创 Mac 下安装运行Rocket.chat

最近花了一周的时间,复习了HTML、CSS、原生JS,并学习了Node.js、CoffeeScript.js、MongoDB,入了下门。 因为准备在Rocket.chat 上做二次开发,所以先下载和安装了Rochet.chat 的环境。由于Rocket.chat在Mac环境下下载和运行非常简单,所以相关的文章非常少,但是还是有一些坑,会让我们怀疑是不是没这么简单,这里记录下Rocket.chat

2016-10-30 12:09:38 5811

原创 Node.js 撸第一个Web应用

使用Node.js 创建Web 应用与使用PHP/Java 语言创建Web应用略有不同。 使用PHP/Java 来编写后台代码时,需要Apache 或者 Nginx 的HTTP 服务器,而接受请求和提供对应的数据和HTML页面是由服务器来做的,根本不需要PHP或者Java 来做处理,而Node.js则大有不同。 Node.js 没有严格的将前端和后台服务器分离

2016-10-20 10:21:05 1412

原创 YYModel V1.0.4源码解析

YYKit出现了很长时间了,一直想要详细解析一下它的源码,都是各种缘由推迟了。 最近稍微闲了一点,决定先从最简单的YYModel开始吧。 首先,我也先去搜索了一下YYModel相关的文章,解析主要API和用法的居多,也有很多人大呼看不懂。其实主要还是要静下心来看,因为YY用了很多并不常见,也不常用的底层API,你一个个去查官方文档会发现,他们并不难。

2016-10-15 19:04:20 1840 1

原创 iOS下使状态栏颜色与H5中背景色一致

iOS 中有的页面也能会内嵌WebView,然后WebView中用H5做了一个导航,而iOS 中状态栏的颜色很难调整的与H5中导航颜色一致。如下图所示: 其实出现这种原因,主要是因为使用16进制颜色,导致颜色转换出现偏差。

2016-10-09 17:21:54 7796 2

原创 你知道如何为iOS工程改名吗?

我们在iOS开发中,难免会遇到项目做到一半要改名字的情况。如果项目名差的太大,工程名看起来总是不舒服的,有良心的开发者可能就会想着为工程改个贴切的名字,那么你就为用到本文记录的内容。 如果我们开发的两个项目相差不大,只有部分主题、布局有更改,那么我们就可以拷贝之前已经完成的项目,改改名字,再对部分界面和代码稍稍修改就可以啦。如何修改工程名呢?下面我就拿一个中等大小的项目来实际操作一下

2016-10-09 09:32:07 2179

原创 UISearchController替换UISearchDisplayController

随着iOS 的升级,iOS 7的占有率更低了。Xcode 升级到Xcode 8之后,对iOS 应用支持的最低版本,iOS 7也被抛弃了。我在新项目中也是最低支持到iOS 8,因此工程里也是各种警告。首先看到的就是UISearchDisplayController建议替换为UISearchController。

2016-09-30 14:53:21 4037

转载 HTTP状态码总结

HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码。有些 App 端接口与 HTML 接口用的是同一个,所以做移动端开发也有必要了解一下HTTP状态码。我们在开发中常接触的HTTP状态码可能就那么几个,比如200、302、404、500等。那除了这些常见的还有那些呢?分别又表示什么意思?

2016-09-29 17:50:35 2027

原创 iOS下JS与OC互相调用(八)--Cordova详解+实战

扯两句,可以跳过由于项目中Cordova相关功能一直是同事在负责,所以也没有仔细的去探究Cordova到底是怎么使用的,又是如何实现JS 与 OC 的交互。所以我基本上是从零开始研究和学习Cordova的使用,从上篇在官网实现命令行创建工程,到工程运行起来,实际项目中怎么使用Cordova,可能还有一些人并不懂,其实我当时执行完那些命令后也不懂。

2016-09-29 11:34:22 17709 3

原创 iOS下JS与OC互相调用(七)--Cordova 基础

Cordova 简介在介绍Cordova之前,必须先提一下PhoneGap。PhoneGap 是Nitobi软件公司2008年推出的一个框架,旨在弥补web 和iOS 之间的不足,使得web 和 iPhone SDK 之间的交互更容易。后来又加入了Android SDK 和BlackBerry SDK,再然后又陆续加入了更多的平台。

2016-09-29 11:33:43 2651

转载 计算机网络中的TCP/IP模型

Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。

2016-09-27 16:57:20 4161

转载 计算机网络中的七层模型

最近又看到这个七层模型了,一直都记不住这个七层模型,就算背住了也很快忘记。主要原因还是因为没有真实的使用场景,也没能理解其中的原理。但是这个东西是计算机网络的基础,既然碰巧看到就顺便整理一下吧。很多知识的梳理都是通过文章来理解贯通的,所以在计算机开发中对于技术的应用对敲代码;对于抽象的知识多写文章,自然而然的就懂了。 关于七层模型的介绍七层模型,也称为OSI。

2016-09-27 11:54:41 44686

转载 如何正确使用const、static、extern

转自:http://www.jianshu.com/p/2fd58ed2cf55前言本篇文章主要介绍在开发中怎么使用const、static、extern关键字。

2016-09-20 17:28:21 2558 1

原创 XMPP系列(七)---获取群组列表

上一篇介绍了如何创建群组,这一篇就介绍一下,如何获取自己的群组列表。在上一篇有提到,如果我们创建的群组是公共的群组,那么获取自己的群组列表时,会获取到自己的群组列表和那些公共的群组。而实际做社交的应用,一般都不会有公共的群组,这样就可以保证获取到的群组都是自己加入的群组啦。

2016-09-07 15:33:58 3490 2

原创 XMPP系列(六)---创建群组

最近公司项目需要,要做一个自己的IMSDK,顺便先把之前没有记录的群聊功能记录一下。 先上资料,查看XMPP群聊相关的资料,可以去这里看协议:XEP-0045 。创建群组XMPP 框架里有一个类XMPPRoom,利用这个类可以很容易的创建一个新的群组。

2016-09-07 13:41:30 7108

原创 Mac 下安装node.js

Node.js 简介Node.js 是一个用Chrome's V8 JavaScript engine 构建的 JavaScript 运行时框架。Node.js 使用事件驱动、非阻塞式 I/O 模块使得它非常的轻量级和非常的高效。Node.js 生态系统,npm 是世界上最大的开源库生态系统。 NPM是什么呢? NPM的全称是Node Package Manager,是Nodejs的包管理器。

2016-08-30 14:08:12 32289 7

SmartPush推送测试工具

一个发起推送消息的工具。可以用来测试APNS推送、VOIP推送等。

2019-04-03

getgateway

WIFI获取ip和mac地址相关工具类,用来获取WiFi的网关地址,其中 getdefaultgateway 是一个C语言文件中的方法。

2019-03-23

ChatDemo例子

一个XMPP的简单demo,包含登录、注册功能。

2015-07-20

FMDB封装以及多线程下用法

FMDB 的CURD操作的封装。 能够实现自动创建数据库,自动创建表、自动检测和添加实体类字段。 多线程下使用。

2015-07-15

FMDB的多线程操作

FMDB的两种多线程操作数据库创建表、插入、删除、更新、查询等。

2015-06-25

IOS课程表Demo

一个简易的IOS课程表demo,希望能帮到他人

2015-01-23

IOS语音通话Demo

用AudioQueue录制声音,然后进行amr编码,并封装RTP包头,其实就是在每一帧加16个字节,可以自己去掉

2014-09-27

空空如也

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

TA关注的人

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