-
Notifications
You must be signed in to change notification settings - Fork 105
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
技术笔记(一) #55
Comments
05/09/2017 周二笔记:
h5 中的 JS 代码:
|
05/10/2017 周三1. UINavigationBar 与自定义 navigation bar参考:
2. webView 预加载方式一: 参考 PreLoad UIWebView on a not yet displayed UIViewController 和 在第一个 controller 中初始化第二个 controller 后,调用 在 携程移动端性能优化 这篇文章中,也提到了 “ 方式二: 参考 美团大众点评 Hybrid 化建设 文中的思路,我采用了最简单的方式——借助 iOS 系统自身的 webView 缓存机制,提前创建一个只有 1 像素的 webView 进行预加载要请求的 URL。 方式三: 携程: 虽然携程用的也是通过提前初始化下一个
美团: 美团的做法跟携程类似,也就是不依赖于系统,而是自己构建和管理缓存,但是美团是预加载本地的静态资源包(实际上携程也有采用离线组件包的优化措施,不知道预加载时有没有用上),而且这个资源包是可以增量更新的。除了方案实现,文章中还提到了预加载静态资源的优势和效果。
方案三中的预加载具体怎么实现呢? webView 的加载优化,除了 native 端的优化,前端也有些工作要做的,淘宝前端团队在这篇文章 中从页面可见时间与异步加载两个方面进行了探讨。其中还谈到了 didFinishLoad 到底什么时候触发 这个问题,这个问题一直是个谜团,不妨参考一下他们的验证。
3. API 数据结构的定义对于如上图所示的图文排版样式,我们讨论了两种数据结构:
方式二:
3.1 关于字段的定义 方式一的优点在于:
缺点在于:
方式二将一图一文打包成一个对象,其优点在于:
缺点在于:
综合来看,我们的业务场景基本上只存在图片和文字两种类型,数据结构相对简单,所以 type 的作用并不大,所以我推荐采用第二种方式。 3.2 共同讨论,信息同步 |
05/11/2017 周四1. router 跳转2. web view 缓存 |
05/12/2017 周五1. WKWebView 的使用和坑点参考: 2. Cocoapods问题:运行 |
05/15/2017 周一1.NSError
延伸阅读:
2. canOpenURL:
使用上面的代码打开 URL
3.WKWebView
4.WKWebView 的一些问题:
延伸阅读:
|
05/16/2017 周二1.获取 iOS 系统版本号2.读取真机上 APP 中的沙盒数据打开 Xcode -> 菜单 -> Window -> Devices -> 从左侧 DEVICES 列表选择要查看的真机 -> 找到 Installed Apps -> 选中要读取的 APP -> 点击下方的⚙按钮 -> 选择 Download Container -> 下载数据到桌面 -> 右击 -> 显示包内容 参考: 3.文件操作与 NSFileManager
4.基于 UIWebView 和 WKWebView 的封装
5.webView 调试工具
|
05/17/2017 周三一、笔记1.使用 WKWebView 时遇到的两个问题
2.在 iOS 应用的 webView 中、Safari 中调试 JavaScript
3.崩溃问题的预防和补救4.自定义 Xcode 文件模板延伸阅读: 二、bug 和其他问题1.生成商户快照,出现图片为空的情况
2.创建商户快照的 view 时,出现崩溃现象
|
05/18/2017 周四1.测试(TDD、单元测试)#24
2.自定义 tabBar、tabBarController |
05/19/2017 周五1.为什么拼两个相同的参数会加载失败
2.URL 与 Restful API |
05/22/2017 周一1.KVO2.Universal Links and Custom URI Scheme3. Cordova4. WKWebView 相关问题
5. JavaScript 中的 Navigator 对象是什么?
6. KILabel |
05/23/2017 周二1.如何查看 GitHub 项目用了哪些语言打开要查看的 repository -> command+F -> 输入 % -> 结果如下图 2.GitHub 使用 Electron 重写桌面客户端
3.GraphQL VS. REST4.消除 Xcode 中的警告#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
// write your code here
#pragma clang diagnostic pop 警告语句对应的 warning,见 Which Clang Warning Is Generating This Message? 5.Top 10 WWDC 2016 Videos6.WKWebView 调研笔记
|
05/24/2017 周三1.dfmuir/KINWebBrowser 的实现2. 二维码
3.Bug 反馈的处理用户反馈了一个诡异的显示 bug,最终发现是因为用户在设置中开启了特殊功能 |
05/25/2017 周四1.内存警告https://www.google.com/search?q=profile+memory+warning+xcode#q=profile+memory+warning+xcode&start=10 2.NSNotification
3.Core Foundation4.image resizing |
05/27/2017 周六1.IBInspectable / IBDesignableIBInspectable / IBDesignable - NSHipster 2.边界条件的考虑会员页在网络离线状态下的一些 bug 没有测到 3.UIDebuggingInformationOverlay4.WebView 加载问题
|
05/31/2017 周三1.保存图片到相册前开启权限问题:
参考:
2.回顾 NSTimer |
06/01/2017 周四1.h5 VS. 原生2.React Native 与 Weex3.NSSet4.reload 和 loadRequest 的区别 |
06/02/2017 周五1.为什么会出现登陆之后刷新不了的问题
2. WKWebView 的 cookie 问题
3. Web View 的 Error |
06/04/2017 周日1. Language tags in HTML and XMLISO 标准中对语言和地区的定义,示例:
2.浏览器引擎的原理 |
06/05/2017 周一
3.h5 和原生中的网络超时、无网络
6.前端开发查询 API 兼容性 7.h5 (JavaScript)中如何判断当前网络状态? |
06/06/2017 周二1.
|
06/07/2017 周三1.如何查看 UIWebView/WKWebView 中的请求
参考:
2. Debug UIWebView 的几种方式 |
06/08/2017 周四1.怎样才算是真正的登录成功(也就是可以 post “login success” 的 notification)?
2.UIWebView 与 NSURLCache |
06/09/2017 周五1.
|
06/10/2017 周一1.提 bug 的正确姿势见笔记 2.UIWebView 的 cache
3.WKWebView 中的 cache
4. WKWebView 的 localStorage 和 cache |
06/11/2017 周二1.localStorage
2.解决WKWebView加载POST请求无法发送参数问题3. UIWebView 相关
|
06/27/2017 周二1.[
|
06/30/2017 周五1. UIWebView 的
|
07/04/2017 周二1.弹窗的问题2.通过代码从 storyboard 中初始化 View Controller第一步:在 storyboard 中设置该 controller 的 Storyboard ID
|
07/06/2017 周四1. C语言预处理命令之条件编译
2.阴影
3.接口字段定义的问题 |
07/10/2017 周一1.如何在 UIScrollView 上响应单指点击事件2. SVN 工作流 |
07/11/2017 周二1.重复文件导致 CocoaPods 报错在 SVN 上提交新文件时,由于文件重复导致执行
原因:.xcodeproj 工程文件中只在 a 目录下有一个 xxx.h 和 一个 xxx.m 文件,但是在 finder 实际目录 b 中,也有一个 xxx.h 和 一个 xxx.m 文件,所以在 SVN 提交时,就提交了同样的文件,这样导致在我的本地工程目录中看上去正常,但是在同事那里就不正常, |
07/12/2017 周三1. URL 中的特殊字符问题:URL 中出现 “|” 符号导致 Encode 的问题,UIWebView 因此加载失败 2. h5 页面中的 JS 代码错误所引发的问题h5 页面中的 JS 代码错误,导致 reload UIWebView 时,加载完成的代理方法走了两遍,第一遍走的是 3. 如何复制一个
|
07/17/2017 周一1.切换 API 环境的问题背景:由于之前我们在开发时,切换 API 环境都需要手动修改 URL 地址,所以很不方便,易出错,而且还需要自己去记住。所以我想使用更简单的处理方式来解决——定义几个不同的环境对应的宏,然后进行条件编译。 问题:尽管我们开发团队没有问题,使用起来更方便,但是没想到给测试团队带来了一些问题,他们的持续集成脚本也需要修改,这一点我倒是没考虑到,还好我们的 leader 想起来了。👏 反思:对于这种问题,我以后应该如何避免呢?重新来过一遍还会再犯吗?
收获:
2.图文帖九宫格图集高度计算的问题背景:为了复用原来的代码,但是又不能直接拿来用,需要修改一下,所以我把原有的图文帖图集的代码重构了一下,改完后我大概测了一下,感觉没什么问题,没想到今天还是被发现了一个 bug。 问题:在一个计算高度的方法里面,方法中的参数名和方法里面定义的局部变量名重名了,结果导致最后的结果不对。 反思:
收获:
|
07/18/2017 周二1.UIView 截图的问题具体讨论见 iOS 中生成图片的几种方式 采用方式一截取高德地图的 mapView 时,不能得到完整的内容,而采用方式二,可以得到完整的内容。 方式一: - (UIImage *)sc_snapshotImage {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *snap = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snap;
} 方式二: - (UIImage *)sc_snapshotImageAfterScreenUpdates:(BOOL)afterUpdates {
if (![self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
return [self sc_snapshotImage];
}
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:afterUpdates];
UIImage *snap = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return snap;
} |
07/19/2017 周三1. SVN 版本控制的问题如果在① 修改文件名,或者 ② 移动文件位置时没有将旧文件的状态提交,可能会导致冗余文件的产生。
改为
我们需要在 SVN 中,对 2.如何设置
|
07/20/2017 周四1.如何将 JavaScript 对象转成 JSON 字符串?现在的浏览器的 JavaScript 库基本上都自带 JSON 对象,使用 var j={"name":"binchen"};
JSON.stringify(j); // '{"name":"binchen"}' |
07/20/2017 周五 |
07/24/2017 周一1.如何在 UINavigationController 中使用自定义 UINavigationBar?UINavigationController *navigationController= [[UINavigationController alloc]initWithNavigationBarClass:[CustomNavBar class] toolbarClass:nil];
[navigationController setViewControllers:[NSArray arrayWithObject:yourRootViewController]]; 或者: UINavigationController *navigationController= [[UINavigationController alloc]initWithNavigationBarClass:[CustomNavBar class] toolbarClass:nil];
[navigationController pushViewController:yourRootViewController animated:NO]; 参考资料
2. URL 编解码
NSString * encodingString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *str = [model.album_name stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 3. 响应者链条:如何使得 view 中超出其 bounds 的 subview 能够响应点击事件? |
07/25/2017 周二1.CIContext bad access crashhttps://stackoverflow.com/questions/27632618/cicontext-bad-access-crash |
07/26/2017 周三1.使用 drawInRect: 绘制 UIImage 时得到的图片不能像原图那样清晰解决办法:使用 原因:因为
|
07/29/2017 周五1. Universal Links见详细笔记 |
07/29/2017 周六1.如何将 JavaScript 中的 String 转为 Number? |
07/31/2017 周一1. 调试 WebViewJavaScriptBridge 遇到的问题原代码: var YHApp = {};
var handlerNames = new Array("share", "requestLocation", "last");
for (var i in handlerNames) {
var handlerName = handlerNames[i];
YHApp[handlerName] = function(data, callback) {
alert(handlerName); // 我希望这里打印的就是对应的 handlerName,但是每次都是 last
}
}
YHApp.share(); 修改后的代码: var YHApp = {};
var handlerNames = new Array("share", "requestLocation", "last");
for (var i in handlerNames) {
var handlerName = handlerNames[i];
YHApp[handlerName] = function (a) {
return function(data, callback) {
alert(a); // 这里打印的就是对应的 handlerName
}
}(handlerName);
}
YHApp.share(); |
08/01/2017 周二1. html网页显示html代码的方法?1)<textarea>标签 2)<xmp> 标签 2. HTML 中的有序列表如何显示像 1.1、1.2 这样的序号?<head>
...
<style>
ol { counter-reset: item }
li{ display: block }
li:before { content: counters(item, ".") " "; counter-increment: item }
</style>
...
</head>
<body>
...
<ol>
<li>li element
<ol>
<li>sub li element</li>
<li>sub li element</li>
<li>sub li element</li>
</ol>
</li>
<li>li element</li>
<li>li element
<ol>
<li>sub li element</li>
<li>sub li element</li>
<li>sub li element</li>
</ol>
</li>
</ol>
...
</body> |
08/07/2017 周一1. 自定义 collectionViewLayout 时出现警告自定义 collectionViewLayout 时出现警告:
在 Stack Overflow 上看到这个问题 Warning: UICollectionViewFlowLayout has cached frame mismatch for index path 'abc' 的答案,说是在
但实际上,我代码就是这么写的啊,找了半天才发现,原来是在 |
08/10/2017 周四1. 数组越界问题问题:bugly 后台上看到奔溃日志:
通过分析发现 18446744073709551615 正好是
原因: 参考: |
08/11/2017 周五1.JS 闭包
参考: 2.JS 中 this 的用法
参考: |
前言
技术笔记系列
The text was updated successfully, but these errors were encountered: