OpenCV图像类型介绍及其转换方式

Mat侧重于计算, OpenCV对Mat类型计算进行了优化.

CvMat / IplImage侧重于图像, OpenCV对图像操作(缩放/单通道提取/图像阈值操作等)进行了优化.

1. Mat

阅读全文

iOS下OpenCV环境配置

记得很久以前在iOS上使用OpenCV还需要下载源码来, 然后手动编译成.a静态库, 现在在iOS上使用OpenCV 已经方便很多, 可以直接到官网下载 openCV.Framework.

阅读全文

Git 加速

国内针对Git提速, 有几种方式:

  1. github.com 上有两种源码获取方式,一是 git clone,一是直接下载 master.zip,后者明显速度快于前者,至少我这儿是这样。如果你没洁癖,可以考虑;

阅读全文

iOS多层波浪效果的实现

先上 GitHub地址

GLWaveView 介绍

阅读全文

iOS App重签名方法及例子

(1)解压qq.ipa 找到Payload文件

unzip qq.ipa //命令行解压

阅读全文

iOS Runtime 对象属性的相关动态操作笔记

动态获取属性

动态获取属性变量名, 类型, atomic/nonatomic, strong/weak/copy/retain/assgn, read

阅读全文

Xcode环境变量

  • SYSTEM_LIBRARY_DIR: 系统库路径,默认为:/System/Library
  • $SYSTEM_LIBRARY_DIR/Extensions 系统核心扩展工程目录,里面放的都是.kext/.plugin/.bundle 等类型的文件

阅读全文

最新Xcode10 Xcode9.x 以及 Xcode8.x 使用插件简明流程

Xcode升级到8.x以上版本后为了提升安全性, 防止XcodeGhost事件的发生, 添加了代码签名机制, 所以我们要使用插件第一步是给Xcode重新签名, 在签名前建议备份一个纯净Xcode做App打包发布用(应用程序目录下复制一个即可):

Xcode 重签名

阅读全文

Xcode LLDB使用

原文出处

LLDB是个开源的内置于XCode的具有REPL(read-eval-print-loop)特征的Debugger,其可以安装C++或者Python插件。
本系列针对于已经知道何为debugger,且有gdb或者lldb使用经验的读者。对于lldb的娴熟使用者,也可以用来作为查阅手册。
这一篇,我们讲述lldb内建的命令。
lldb与gdb命令名的对照表

阅读全文

Runtime 操作函数笔记

1. 类相关操作函数

1.1 name

1
2
// 获取类的类名
const char * class_getName ( Class cls );

1.2 super_class和meta-class

1
2
3
4
5
// 获取类的父类
Class class_getSuperclass ( Class cls );

// 判断给定的Class是否是一个meta class
BOOL class_isMetaClass ( Class cls );

1.3 instance_size

1
2
// 获取实例大小
size_t class_getInstanceSize ( Class cls );

阅读全文

Runtime:Method Swizzling 学习笔记

简述

是改变一个selector实际实现的技术,可以在运行时修改selector对应的函数来修改Method的实现。前面的消息转发很强大,但是需要能够修改对应类的源码,但是对于有些类无法修改其源码时又要更改其方法实现时可以使用Method Swizzling,通过重新映射方法来达到目的,但是跟消息转发比起来调试会困难。

应用场景

假设我们想跟踪在一个iOS应用中每个视图控制器展现给用户的次数, 我们可以给每个视图控制器对应的viewWillAppear:实现方法中增加相应的跟踪代码,但是这样做会产生大量重复的代码。
子类化可能是另一个选择,但要求你将UIViewController、 UITableViewController、 UINavigationController 以及所有其他视图控制器类都子类化,这也会导致代码重复。

阅读全文

RunTime 学习笔记:基础概念及消息原理

1 常见类型及方法

SEL (方法选择器 | 映射到方法的C字符串)

objc_msgSend函数第二个参数类型为SEL,它是selector在Objc中的表示类型(Swift中是Selector类)。selector是方法选择器,可以理解为区分方法的 ID,而这个 ID 的数据结构是SEL:

typedef struct objc_selector *SEL;

其实它就是个映射到方法的C字符串,你可以用 Objc 编译器命令@selector()或者 Runtime 系统的sel_registerName函数来获得一个SEL类型的方法选择器。

不同类中相同名字的方法所对应的方法选择器是相同的,即使方法名字相同而变量类型不同也会导致它们具有相同的方法选择器,于是 Objc 中方法命名有时会带上参数类型(NSNumber一堆抽象工厂方法拿走不谢),Cocoa 中有好多长长的方法哦。

阅读全文

iOS ReactiveCocoa基础篇

1.ReactiveCocoa简介

ReactiveCocoa(简称为RAC),是由Github开源的一个应用于iOS和OS开发的新框架,Cocoa是苹果整套框架的简称,因此很多苹果框架喜欢以Cocoa结尾。

2.ReactiveCocoa作用

  • 在我们iOS开发过程中,当某些事件响应的时候,需要处理某些业务逻辑,这些事件都用不同的方式来处理。
  • 比如按钮的点击使用action,ScrollView滚动使用delegate,属性值改变使用KVO等系统提供的方式。
  • 其实这些事件,都可以通过RAC处理
  • ReactiveCocoa为事件提供了很多处理方法,而且利用RAC处理事件很方便,可以把要处理的事情,和监听的事情的代码放在一起,这样非常方便我们管理,就不需要跳到对应的方法里。非常符合我们开发中高聚合,低耦合的思想。

3.编程思想

在开发中我们也不能太依赖于某个框架,否则这个框架不更新了,导致项目后期没办法维护,比如之前Facebook提供的Three20框架,在当时也是神器,但是后来不更新了,也就没什么人用了。因此我感觉学习一个框架,还是有必要了解它的编程思想。

先简单介绍下目前咱们已知的编程思想。

阅读全文