Objective-C与JavaScript交互的两种方式

1、在iOS项目开发中,原生页面中掺杂Html5页面已不是什么新鲜事了,毕竟H5也他相关的优势,比如布局、富文本内容展示等;

2、随着H5页面的侵入,OC与JS的交互意愿越来越强烈,就目前来看,在不引用第三方库的前提下,有两种方式可以解决;
2.1、iOS6及以前通过拦截NSRequest请求来调用原生方法进行交互;
2.2、iOS7及以后的版本苹果官方引入了JavaScriptCore框架;

3、拦截NSRequest请求
A、UIwebView有个代理方法:

1
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

B、此方法通过返回YES/NO来决定是否跳转到request的页面,因此我们可以通过协议头来区分是正常的URL请求还是本地方法的调用请求;[……]

继续阅读

谈谈数组的浅拷贝和深拷贝(copy & mutableCopy)

1、基本分析
1.1、数组有两种形式,NSArray和NSMutableArray;
1.2、拷贝也有两个方法copy和mutableCopy;
1.3、那么相互组合就会有四种情况:NSArray的copy、mutableCopy;NSMutableArray的copy、mutableCopy;

2、代码验证
2.1、先创建一个NSObject对象与一个NSArray数组,将对象放到数组中;
2.2、分别对NSArray数组进行copy与mutableCopy,查看得到的结果数据类型及地址[……]

继续阅读

MacOS下安装PhoneGap/cordova开发编译环境

1. 在App Store安装xcode,最新版位6.0

2. 安装node.js环境

官网: http://nodejs.org/

点击【install】,会下载mac的安装包。正常安装即可

3. 使用命令行安装 cordova

官网: http://cordova.apache.org

命令行帮助: http://cordova.apache.org/docs/en/4.0.0//guide_cli_index.md.html#The%20Command-Line%20Interface

主要命令: sudo npm install -g cordova[……]

继续阅读

自定义UIActionSheet实现分享功能,一行代码搞定!

1、先上图,有图好说话

Simulator-Screen-Shot-2016年3月13日-下午5.35.17

2、设置思路

2.1、我希望这是一个View,并非控制器,节省开支;
2.2、 这个View包含一个背景,一个面板,若干个按钮或标签;
2.3、我希望实现的功能是视图展示+事件响应;
2.4、希望无偶合性,并且一行代码搞定(能一行代码搞定的必定包含block);
2.5、这若干个按钮最好是外面传进来,要不我怎么知道需要什么样的按钮?传一组图片?那文字呢?再传一组文字?如何对应?
2.6、我希望开始调用的时候只要传按钮给你,结束后告诉我用户点了哪个按钮,其他的我都不想管(高度无偶封装),呵呵!
2.7、调用时还最好是类方法,我不喜欢alloc;[……]

继续阅读

iOS导航栏上实现webView的网页返回及关闭按钮

QQ20160307-0@2xSimulator-Screen-Shot-2016年3月7日-下午2.56.23
1、功能描述:
1.1、webView中加载多层网页时需要实现浏览器的“返回”功能;
2.2、同时需要实现iOS自身的返回导航控制器的上一个页面;
2、应用场景
2.1、webView
3、实现原理:
3.1、通过webview的canGoback来判断是否能够返回,从而决定“关闭”按钮的隐藏与显示;
3.2、在webview的代理方法webViewDidStartLoad、webViewDidFinishLoad两个方法中判断;
3.3、修改导航栏的leftBarbuttonItems来增加或删除“关闭”按钮;
3.4、通过canGoback来修改返回按钮的事件;[……]

继续阅读