自定义博客皮肤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)
  • 收藏
  • 关注

原创 iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge

上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用的。WKWebView 下使用WebViewJavascriptBridge与UIWebView 大同小异。主

2016-08-29 13:53:44 17519 4

原创 iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge

WebViewJavascriptBridge是一个有点年代的JS与OC交互的库,使用该库的著名应用还挺多的,目前这个库有7000+star。我去翻看了它的第一版本已经是4年前了,在版本V4.1.4以及之前,该库只有一个类和一个js 的txt文件,所以旧版本的WebViewJavascriptBridge 是非常容易理解的。

2016-08-29 13:52:12 6927

原创 iOS下JS与OC互相调用(四)--JavaScriptCore

前面讲完拦截URL的方式实现JS与OC互相调用,终于到JavaScriptCore了。它是从iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下,提供了简单快捷的方式与JavaScript交互。

2016-08-25 08:50:54 6264 2

原创 iOS下JS与OC互相调用(三)--MessageHandler

使用WKWebView的时候,如果想要实现JS调用OC方法,除了拦截URL之外,还有一种简单的方式。那就是利用WKWebView的新特性MessageHandler来实现JS调用原生方法。

2016-08-06 14:01:31 29867 2

原创 iOS下JS与OC互相调用(二)--WKWebView 拦截URL

在上篇文章中讲述了使用UIWebView拦截URL的方式来处理JS与OC交互。 由于UIWebView比较耗内存,性能上不太好,而苹果在iOS 8中推出了WKWebView。 同样的用WKWebView也可以拦截URL,做JS 与OC交互。

2016-08-06 14:00:08 22773

原创 iOS下JS与OC互相调用(一)--UIWebView 拦截URL

最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换。顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊。今天介绍UIWebView拦截URL的方式来实现JS调用OC方法

2016-08-06 13:59:13 8670

原创 iOS下JS与原生OC互相调用(总结)

这是去年总结的一篇文章,也一并先放到这个目录下好了。 iOS开发免不了要与UIWebView打交道,然后就要涉及到JS与原生OC交互,今天总结一下JS与原生OC交互的两种方式。

2016-08-06 13:54:26 1865

原创 Runtime系列(二)--Runtime的使用场景

Runtime 理解介绍的文章非常多,我只想讲讲Runtime 可以用在哪里,而我在项目里哪些地方用到了runtime。多以实际使用过程为主,来介绍runtime的使用。* 那么runtime 怎么使用?可以用在哪些场景下呢?* 首先,使用runtime 相关API,要#import <objc/runtime.h>运行时获取某个类的属性或函数运行时动态获取某个类的属性或者函数等,可以用来做很多事

2016-07-26 16:26:32 1438

转载 Runtime系列(一)-- 基础知识

众所周知,Objective-C 是一种运行时语言。运行时怎么来体现的呢?比如一个对象的类型确定,或者对象的方法实现的绑定都是推迟到软件的运行时才能确定的。而运行时的诸多特性都是由runtime 来实现的。runtime 其实就是一套C语言API库,因此它的实现也还是C语言。如果你想看tuntime的实现源码,可以去官网下载:objc4-646.tar.gz(我看的是这个)。

2016-07-26 16:24:46 652

原创 iOS 中如何判断当前是2G/3G/4G/5G/WiFi

5G 什么的,还得等苹果API更新啊,不过将来还是这个处理过程就是了。 关于判断当前的网络环境是2G/3G/4G,这个问题以前经常看到,最近在一工程里看到了如果判断的API。而在撸WebRTC音视频通话的时候,看到了Demo中将SCNetworkReachability与其结合,当网络环境改变时,判断当前连接的是什么网络环境,写法欠佳(因为将其与WebRTC的其他逻辑柔和在了一个类)。

2016-07-13 17:30:52 14629

原创 GCD API 记录 (三)

本篇就不废话啦,接着上篇记录我见过或者使用过的与GCD相关的API。由于一些API使用的非常少,用过之后难免会忘记,还是记录一下比较好。本文主要记录的有dispatch_group_wait、dispatch_apply、dispatch_semaphore、dispatch_source中的timer、dispatch_source 中神奇的数据合并。

2016-07-13 17:29:44 1976

原创 50行代码实现图文混排

开头本文是介绍的是iOS 7之后的API来实现图文混排,主要是帮助大家了解使用这种方式来实现图文混排的原理。现在即时通讯和朋友圈这两块功能基本上属于app的标配功能了吧。图文混排在这两块中使用最为常见,我已经做好了demo:图文混排demo。文中会讲述几点小技巧:图文混排、动态计算文字长度、图片拉伸方法。

2016-07-12 11:23:29 2992

原创 GCD API记录(二)

这是关于GCD的第二篇文章,GCD的API有100多个,通过快捷键Option + 单击,可以在Reference中的Grand Central Dispatch (GCD) Reference中看到。除了上篇文章介绍的几个外,其他用到的API就在这篇文章里记录。

2016-07-11 14:43:01 561

原创 算法之路(二)呈现O(logN)型的三个算法

典型时间复杂度我们知道算法的执行效率,可以从它的时间复杂度来推算出一二。而典型的时间复杂度有哪些类型呢? 除了常数时间复杂度外,logN型的算法效率是最高的。

2016-07-11 09:17:10 7138 1

原创 GCD API 理解 (一)

iOS 开发中有三大进阶性的技术点,分别是GCD、runtime 和runloop。其中GCD用的最多,runtime也有不少使用场景,runloop在系统的API里体现的比较多,项目里实际使用比较少。

2016-07-11 09:15:04 1758

原创 算法之路(一)----求最大子序列

算法在用户量比较少,或者计算量比较小的时候,影响确实不大,但是到达一定数量级的时候,算法的优劣就会极大的影响程序的顺畅程度。优秀的算法甚至能给人amazing的感觉。今天记录《数据结构与算法分析------C语言描述》中的一个求最大子序列的问题。

2016-06-24 16:46:23 869

原创 iOS下WebRTC音视频通话(三)-音视频通话

前两篇文章记录了音视频通话的一些概念和一些流程,以及一个局域网内音视频通话的示例。 今天以一个伪真实网络间的音视频通话示例,来分析WebRTC音视频通话的过程。 上一篇因为是在相同路由内,所以不需要穿墙,两个客户端是可以直接传输多媒体流数据。用XMPP作为信令传输的通道也非常的简单。 本篇会添加上STUN服务器和TURN服务器,让ICE框架的功能发挥出来,实现完整的音视频通话。

2016-06-20 18:17:34 2609 5

原创 iOS下WebRTC音视频通话(二)-局域网内音视频通话

这里是iOS 下WebRTC音视频通话开发的第二篇,在这一篇会利用一个局域网内音视频通话的例子介绍WebRTC中常用的API。 如果你下载并编译完成之后,会看到一个iOS 版的WebRTC Demo。但是那个demo涉及到外网的通讯需要翻墙,而且还有对信令消息的封装理解起来非常的困难。 但是,我将要写的这个demo去掉了STUN服务器、TURN服务器配置,以及信令的包装,非常容易理解。

2016-06-15 18:10:48 10137 1

原创 iOS下WebRTC音视频通话(一)

WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术。

2016-06-15 14:47:36 7036

原创 iOS中UITableView分割线左侧顶齐

iOS 7开始UITableView的分割线不在从左侧边界开始了,而是默认空出了一段距离。如果想要使用默认的分割线而且还要从左侧边界开始的话,有两种解决方式:1、在tableView的代理方法中设置- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtInde

2016-04-22 14:36:03 3168

转载 OC中的枚举类型

什么是位移操作枚举呢?一直对OC中的位移操作枚举不太理解,查找到两篇介绍OC中枚举的文章,觉得很不错。

2016-04-12 17:06:14 5822

原创 在app内打开自己app的专用设置界面

在app内打开自己app的专用设置界面

2015-12-02 14:58:54 2525

原创 XMPP系列(五)---文件传输

xmpp 中文件传输的介绍与实现

2015-07-28 23:47:36 5334 7

原创 XMPP系列(四)---发送和接收文字消息,获取历史消息功能

XMPP系列(四)---发送和接收文字消息,获取历史消息功能

2015-07-24 00:48:41 6928

转载 iOS下如何获取一个类的所有子类

因为项目中,不同用户切换时,用的是不同数据库,路径不同,而JKDBModel,数据库创建和字段检测,在app一次生命周期里,只会执行一次,所以得考虑账号切换时,创建数据库,需要获取所有JKDBModel的子类,期望Xcode文档中找到类似class_getSubclass这样的API无果,后来在stackoverflow上找到一个类似的解决方案: int numClasses;

2015-07-23 10:53:19 5372

原创 XMPP系列(三)---获取好友列表、添加好友

一个简单的XMPP例子,包含注册、登录、心跳检测、自动重连、以及获取好友列表、添加好友功能。

2015-07-23 00:00:56 6889 1

原创 XMPP系列(二)----用户注册和用户登录功能

创建XMPP工程,并实现注册和登录功能

2015-07-20 22:54:51 6732 2

原创 XMPP系列(一):OpenFire环境搭建

即时通讯XMPP环境搭建,主要介绍openfire和外部数据库安装过程。

2015-07-18 23:34:14 2784 2

原创 一行代码实现FMDB的CURD操作

FMDB数据库操作的封装,继承JKDBModel后一行代码实现CURD操作。因为项目中主要是多线程中操作数据库,所以Demo里都是多线程操作的方式,该类也可以在主线程中使用。依赖FMDB,支持ARC和非ARC。自动创建实体类数据库和数据库表,自动检测并添加的字段。不需要实体与数据库映射的属性,添加到transients数组即可。

2015-07-03 13:31:08 1755 3

原创 iOS下FMDB的多线程操作(二)

iOS 中使用FMDatabaseQueue来使用多线程需要注意的时queue操作中不能嵌套queue操作,否则会各种错误。

2015-06-25 17:55:40 1737

原创 iOS下FMDB的多线程操作(一)

iOS中FMDB在多线程下的使用和封装。

2015-06-25 17:41:15 5491

原创 iOS评分功能、APP中打开其他应用程序

iOS评分功能和APP中打开其他应用程序

2015-06-21 16:43:19 1322

转载 SQLite数据库中多线程使用问题

由于项目是接手之前的烂尾项目,经常被吐槽说界面卡半天,后来发现项目里的网络请求,数据库操作都是在主线程。将一些长时间的操作换到多线程或者异步之后后,用户交互是变的顺畅多了,可是经常出现莫名其妙的闪退,还有数据插入错表的情况(用户表数据插入到消息表中)。因为项目比较早,用的三方库都比较旧,所以数据库用的是SQLitePersistentObject,本以为是数据库比较老旧问题,因为数据操作遍布数

2015-06-19 14:26:38 4976

原创 iOS中判断照片和相机权限

1、照片权限判断在iOS6之后,app中使用照片(即自带相册)需要用户权限验证,所以我们可以做一个权限判断给出友好的提示或者界面效果。相册判断需要导入 ALAuthorizationStatus author = [ALAssetsLibrary authorizationStatus];typedef NS_ENUM(NSInteger, ALAuthorizationStatus)

2015-06-08 15:02:40 3556

原创 iOS中获取本地通讯录联系人以及汉字首字母排序

iOS中获取手机通讯录中的联系人信息以及按首字母排序的方法

2015-05-15 16:10:30 5537 1

原创 UIScrollView的无限左滑轮播一点也不难

UIScrollView的无限轮播

2015-05-15 15:51:04 965

原创 iOS 百度地图计算两个点时间的距离

iOS 百度地图计算两个点时间的距离

2015-04-01 12:50:45 3220

原创 iOS自定义多参数类型方法

前几天做自定义UIAlertView的时候,想仿造系统自带的初始化方法做一个AlertView,里面涉及到不确定多参数的设置和使用问题。这里做一下记录。

2015-04-01 10:03:56 4956

原创 iOS开发小技巧总结

iOS开发小技巧总结

2015-03-27 14:44:01 858

原创 iOS中动态计算不同颜色、字体的文字高度

iOS中动态计算不同颜色、字体的文字高度

2015-03-25 18:26:06 1474

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关注的人

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