资深移动开发者
在app开发中使用webview,经常需要从js端调用和原生相关的交互功能。那么这样一层bridge的开发工作具体采用什么方案来实现呢? JS call OC: 方案1: 最古老也是使用最广泛、且跨平台的方案是在页面内嵌入一个iframe,然后通过该iframe触发的webview相关事件来进行hook,从而达到通信的目的。
下面这一篇是关于线程安全保护实现的几种方式和对比,综合来讲,如果简单的同步(不考虑性能)可以使用代码实现最简单的@synchronized,也是我们最常用的做法。 如果关注性能或在gcd中使用,推荐使用dispatch_semaphore_wait。
http://www.jianshu.com/p/d616aebf3f14
https://ming1016.github.io/2017/06/20/deeply-ios-performance-optimization/?hmsr=toutiao.
http://javayhu.me/blog/2017/07/28/react-native-upgrade/
使用RN的webview过程中,遇到了疑似功能性的bug.(RN 0.44.3, iOS模拟器环境) 在webview页面之外提供了一个新的按钮用于切换到制定的uri,但测试过程中该按钮的切换行为只在第一次生效,后续点击没有效果。
https://mp.weixin.qq.com/s?__biz=MzA3NjgyNzk2Mw==&mid=2247483760&idx=1&sn=0393977133796e355248820ed7d4834d&chksm=9f5a1d24a82d9432922861d8499b6b3a168ebea04d5a17bad53ac83ce4b2d53b1991858c196e#rd 这里没有考虑到和原生交互的部分,比如原生插件? 可能适合于纯RN开发,对于插件这一块的缺陷没有实践论证。
苹果系统的文件预览能力对于很多app来说是必要的,但其提供的UI相关api并不是可以定制的,比如需要定制toolbar, navigationbar的情况,直接使用QLPreviewController或者 UIDocumentInteractionController 并不能达到想要的效果。
http://www.cocoachina.com/ios/20170719/19933.html
http://blog.csdn.net/a153375250/article/details/53434299
定时操作对于开发人员来说有着广泛的应用场景;对于iOS开发,实现定时操作的手法也有多种,这里我们简单的进行比较和分析。 1. NSTimer 简单易上手,最高级的api,调用也比较方便。
http://www.jianshu.com/p/407835fa2430
1.时间管理 2.结果导向型思维 3.写手帐,写公众号 http://www.jianshu.com/p/b412c5f8474f?utm_campaign=maleskine&utm_content=note&utm_medium=pc_all_hots&ut...
RN开发新姿势? https://docs.expo.io/versions/v18.0.0/index.htmlhttps://segmentfault.com/a/1190000008709892 通过expo直接开发?运行js?
http://www.cocoachina.com/programmer/20170614/19523.html
http://www.jianshu.com/p/7c89b8c5482a
http://www.cnblogs.com/huizhang212/p/lipolib.html
http://www.cocoachina.com/programmer/20170505/19189.html
从图片扫描 有时候我们需要从图片中扫描二维码,或者从相册选择一张图片,代码如下,具体可以看demo。其中feature.messageString就是扫描后的结果。 1 2 3 4 5 6 7 8 9 10 11 12 - (void)findQRCode...
http://www.jianshu.com/p/ed64b583002c
iOS和js交互三部曲,很不错的文章和demo 1.纯UIWebview OC与JS交互之UIWebView 2.wvjb OC与JS交互之WebViewJavascriptBridge 3.
核心观点:反对但支持;70/100即可行动;如果可能让决策可逆(改变的成本可以承担);提升快速纠错的能力,而不是一开始就想着不犯错 http://www.businessinsider.
http://www.cocoachina.com/programmer/20170412/19039.html
http://blog.csdn.net/lovelyelfpop/article/details/52033045
iOS中的高精度图片采集和使用注意点和关键步骤 通常的自定义图片采集方案都是基于AVCaptureSession;AVCaptureSession采集出来的源数据的精度是可以通过一系列的配置来控制的: AVCaptureSessionPresetPh...
⌘(command)、⌥(option)、⇧(shift)
http://www.cocoachina.com/ios/20170401/18996.html
svn里很常见的操作是查看某个文件的修改历史,那么在git里面通过sourcetree我们可能无法直接做到这一点。下面的文章写了有关这个操作的小技巧,mark一下。 http://www.jianshu.com/p/8901f1f5ad97
http://xfenglin.com/a/12008988750.html 1、控件的局部圆角问题 你是不是也遇到过这样的问题,一个button或者label,只要右边的两个角圆角,或者只要一个圆角。
http://www.cocoachina.com/ios/20170324/18955.html
http://www.jianshu.com/p/e16c91acce03
http://www.jianshu.com/p/e16c91acce03
http://blog.csdn.net/sinat_17775997/article/details/53728611
比如View,按下tab,即可自动补完(这里是rn的jsx语法,和html类似)
这里具体讲解了RN的setNativeProps的使用: http://www.jianshu.com/p/638c85b9bb66 而在直接操作的过程中,对REFS的理解是不可缺少的。
http://geek.csdn.net/news/detail/139051
延展操作符(Spread operator) 这个 … 操作符(也被叫做延展操作符 - spread operator)已经被 ES6 数组 支持。它允许传递数组或者类数组直接做为函数的参数而不用通过apply。
http://www.cocoachina.com/ios/20170213/18659.html
笔者目前使用的开发环境是webstorm。 要想实现RN代码自动提示,需要通过这个东西: https://github.com/virtoolswebplayer/ReactNative-LiveTemplate 在webstorm中导入一个jar,重启webstorm即生效。
实现的需求包括:文档列表、下载列表(包含删除功能)、文档详情、预览和搜索,若无法在app内打开则需要提供在其他app打开的能力。 简单来说,文档下载和管理的实现在技术上没有多大难度,但这里的方案实现了以下几点: 1.
因为上一篇有一些细节还是没有说透,特别是断点续传这里,继续和大家聊一聊这里面的问题。 1. 关于resumedata的bug, 目前苹果在10.2中已经解决了,也就是说做适配的同学只需要额外考虑10.x和10.1.x版本。
首先,后台下载和断点续传是两件事;这里放在一起说是为了图个方便,实际二者在技术实现上没有什么关联。 目前我们的下载实现一般都是基于nsurlsession和iOS7+的,所以我们这里不考虑iOS6和以前的老系统,主要技术实现也是基于nsurlsession. 先说后台下载: 1. 在没有特别关注的情况下,可能很多开发者使用afnetworking下载的姿势并没有考虑到后台下载这一块。
https://code.tutsplus.com/tutorials/ios-7-sdk-background-transfer-service--mobile-20595
https://www.objc.io/issues/5-ios7/multitasking/
http://www.cocoachina.com/industry/20131114/7350.html
npm install –save react-native@0.33 指定rn版本号进行安装;其中 –save可以保存相关信息到package.json中,后面@指定版本号。
使用npm安装rn插件时记得加上save命令,这样会把相关信息自动记录到package.json文件中,后续可以从此文件自动生成相关的插件文件。 npm install --save rnpm rnpm link xxx rnpm是一个半官方的包管理器,可以很方便的使用link命令安装rn的第三方插件。
cocoapods新版本已经跳到1.x版本;以前老的成熟版本0.39要继续使用则需要指定souce: source "https://github.com/CocoaPods/Old-Specs" 这个source应该已经不再维护了。
http://www.jianshu.com/p/b822285f73ac
有这样的需求: 类似于 GLOBAL_STR(@"请继续添加"); 这样的代码,需要批量修改为: GLOBAL_STR(@"请继续添加", nil); 这里使用普通的查找替换不能够达到目的,需要用到正则表达式: GLOBAL_STR(.*); 替换文本的正则: GLOBAL_STR(.$1,nil); xcode的查找替换选项里面选择regular expression,使用上面的正则即可解决问题。