海洋顶端

仅作为个人总结,如有错误,欢迎指正

函数响应式编程(FRP)思想

ReactiveCocoa是IOS广为使用的技术框架,而ReactiveCocoa的核心思想就FRP。FRP不同于JAVA的object-oriented和AOP,FRP能让你的代码像数学一样简洁,业务像流水一样清晰流畅。函数响应式编程响应式编程思想为体,函数式编程思想为用。

2017-03-14 20:24:55

阅读数 5422

评论数 2

自定义ViewPager实现轮播效果

前言这种轮播效果多应用于展示电影海报,但是效果并不好,有些没有手势动画,更加没有fling效果。我将ViewPager的源码拷贝出来,做了修改,实现了这两个效果。 一屏显示三个page,让中间一个page居中突出显示 首先我们可以设置一个page宽为ViewPager宽的一定比例,比如 0.7。...

2015-08-29 12:08:19

阅读数 837

评论数 0

可滑动关闭的对话框(二)

继续完善,希望这个控件可以变成轮子被更多的人使用。 改进 改变使用方式,现在可以直接继承SwipeDialog使用,更加方便。并且和系统Dialog特性保持一致,比如设置Dialog的显示、取消、关闭监听器,设置可取消、可点击窗口以外区域取消等等。 增强适用性,SwipeDialog的布局支持Li...

2015-08-29 11:18:01

阅读数 724

评论数 0

Xcode 利用 Target 机制定制构建过程的一次尝试

    标题太拗口了。事情是这样的,之前对 Target 有所了解,可是没有自己运用过,刚巧有个事情,我觉得可以借助 Target 机制,就动手实践了一下,今天总结一下。这个事情是我们有个库不支持 x86 平台,导致我们的 app 不能用模拟器调试。用这个库是个非常边缘的业务,所以采取方案是自定义...

2019-05-07 21:43:02

阅读数 35

评论数 0

ZBar 源码分析 beta

前言 身在物流行业,扫描条码的场景很多。为了改造 ZBar 使其返回条码方向(条码与水平线的夹角),阅读了 ZBar 的源码。总结一下。(没有弄清楚所有细节,只说说我弄清楚的部分) 主流程 应该大家都知道 ZBar 是 Z 字型扫描的。(为什么要 Z 字型扫描?不清楚。)一次扫描一行或者一列,在扫...

2019-04-21 17:31:56

阅读数 192

评论数 0

YUV 400 格式图像转换成 ARGB 格式图像中犯的一个低级 Bug

一、背景     最近在做 Android 巴枪项目,借助巴枪上面的二维扫描头拍照,然后去做 OCR。这属于定制需求,只能去和各个巴枪厂家去对接。后来厂家陆续暴露给了我们这个能力,但是接口都不一样(领教了 Android 的碎片化)。这个 Bug 就出在我适配一款巴枪的过程中。 二、Bug    ...

2019-01-18 18:01:30

阅读数 53

评论数 0

Objective-C 消息机制学习总结

    message 机制可以说是 objc 最重要的特征,没有之一。零零散散看了 method cache、method search 以及 message forward,串一串,总结一下。 message 机制带来很大的灵活性,调用和实现完全解耦,实现上也力求高效,毕竟 send mess...

2018-11-09 16:10:35

阅读数 88

评论数 0

Weak 指针源码学习

    weak 指针,大家都不陌生。之前也简单学习了一下,总结了一下对象在回收时 weak 指针是如何被 nil 掉的。不过我对 weak 指针的一些方面还有一些疑问,所以去看了一下源码。我的疑问主要是: weak 指针使用时,会对所指对象进行 retain 吗,还是需要我们手动的去做这件事,...

2018-11-02 16:34:52

阅读数 76

评论数 0

iOS 实现音频流播放器中踩的内存管理相关的坑

    App 作为工具应用,具备语音提醒的能力。语音是调用云服务进行合成的,这样做灵活些,新增提醒不用准备相应的语音文件。云服务合成音频,以流的方式返回到端上,端上使用 Audio Queue 播放。流式播放,可以抽象为生产者-消费者问题。云是我们的生产者,麦克风是我们的消费者。Audio Qu...

2018-07-25 17:14:38

阅读数 221

评论数 0

iOS 内存

    观看 Fixing Memory Issues、App Startup Time: Past, Present, and Future 两个视频的总结。 一、Virtual Memory VS Physical Memory     Virtual Memory 是开发者视角的 mem...

2018-07-21 12:05:31

阅读数 139

评论数 0

objective-c non-fragile ivars 学习笔记

    最近想要对我维护的 App 做启动优化,观看了这两个视频,Optimizing App Startup Time、iOS App Performance: Responsiveness。视频干货满满,涉及到了 iOS 可执行文件的结构、系统是如何启动 App 的等等底层知识,需要慢慢消化。...

2018-07-15 10:50:54

阅读数 126

评论数 0

Mach-O Executable 文件结构

    看这篇文章,获益匪浅,解答了我一直以来的关于我的代码最终是如何在机器跑起来的疑惑,总结一下。     首先,一个可执行文件,.out 文件,内部会分为多个 Segment,比如: __TEXT: 放的是机器码,是 CPU 可以理解、执行的指令 __DATA: 放的是数据 __PAGE...

2018-06-30 18:35:50

阅读数 93

评论数 0

CocoaPods到底做了什么

CocoaPods到底做了什么     CocoaPods 到底做了什么,还是需要了解一下,否则构建出了问题,根本无从下手解决。查了一些文档,创建了 Demo ,用 Git 看 CocoaPods 到底新增、修改了哪些文件,总结一下。     首先 CocoaPods 设计出来是要解决两个问题...

2018-06-17 19:42:09

阅读数 277

评论数 0

Archive Invalid Bitcode Signature 错误不能通过设置 Release Build Active Architecture Only 为 YES 来解决

Archive Invalid Bitcode Signature 错误不能通过设置 Release Build Active Architecture Only 为 YES 来解决     今天在项目中遇到了这个问题。这也不是第一次遇到了。之前使用的解决方案都没能奏效,包括 Clean、Del...

2018-06-09 17:45:48

阅读数 1269

评论数 0

当我们在设置 Other Linker Flags -lstdc++时,我们到底在设置什么?

问题     最近在玩儿 OCR ,使用了开源的 OCR 引擎 — TesseractOCR。编译遇到了如下问题:     搜索到两个解决方案,测试之后都是奏效。一是在 Other Linker Flags 中新增标志 -lstdc++,二是在 Linked Framework and L...

2018-06-03 18:34:45

阅读数 677

评论数 0

TesseractOCR-iOS 无法找到 traineddata 文件问题 & Xcode Group 与 Folder Reference 的区别

TesseractOCR-iOS 无法找到 traineddata 文件问题 & Xcode Group 与 Folder Reference 的区别 最近在玩儿 OCR,运行 APP 的时候遇到了一个找不到资源文件的问题,导致无法识别。Google 了一...

2018-06-03 17:20:45

阅读数 313

评论数 0

扫描图像场景下平移手机的运动检测方法探索

最近的项目中,需要连续的扫描图像进行图像识别。(之所以是用扫的方式,而不是用拍的方式,是为了后面做自动化,扫其实是自动的拍,摄像头打开,视频流过来,我要有能力知道我要用哪一帧,而不是用户去拍)。扫描的过程中,我不可能把每一帧都识别一下,这个开销太高,而且也没有必要,很多帧是重复。所以,我需要采样策...

2018-05-14 21:42:03

阅读数 104

评论数 0

一个 double 类型精度问题导致的 Bug

在项目中,遇到一个 Bug —— 显示的订单 ID 不对,和 API 测试平台获取的数据不一致。首先怀疑的是取错字段了,认真检查了一下,不是这个原因。然后怀疑的是 Native 网络请求模块 JsonString 转 Model 的时候出错了,Debug 了一下发现网络请求的结果解析成的 Mode...

2018-05-13 16:47:54

阅读数 1563

评论数 0

'BAD_ACCESS' 错误解决记录,一个与 '__bridge' 有关,一个与 'out parameter' 有关

EXC_BAD_ACCESS(code=EXC_I386_GPFLT) __bridge out parameter NSError **

2017-08-06 13:52:55

阅读数 343

评论数 0

Block的内存管理以及变量Capture

总的来说,Block = 匿名函数 + Capture变量。它的用途包括: 作为匿名函数使用,即把函数定义在使用到的地方,逻辑更加集中。 Capture变量,可以capture Block定义所在的作用域内的变量,类似于保存上下文,Block在别处被调用时,好像具备Block定义所在的上下文一样可...

2017-05-07 13:53:15

阅读数 334

评论数 0

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