- 博客(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
转载 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
原创 一行代码实现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
转载 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自定义多参数类型方法
前几天做自定义UIAlertView的时候,想仿造系统自带的初始化方法做一个AlertView,里面涉及到不确定多参数的设置和使用问题。这里做一下记录。
2015-04-01 10:03:56 4956
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人