领琾

黄宜波的个人博客

iOS多线程:深入理解GCD

iOS与OS X多线程和内存管理总结

什么是GCD? GCD(Grand Central Dispatch)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统及中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可以执行任务,这样就比以前的线程更有效率。 示例: 1 2 3 4...

iOS中的几种Hook实现方案

Hook的原理就是改变程序的执行流程,采用面向切面(AOP)编程思想。 Runtime–Method Swizzling 得益于Objective-C这门语言的动态性,我们可以让程序在运行时做出一些改变,进而调用我们自己定义的方法。使用Runtime交换方法的核心就是Method Swizzling。 需要调用的方法为:method_exchangeImplementations,它实...

CocoaPods组件化之OC与Swift混编问题

PCH pod中饭pch尽量不要使用,每次pod install会重置,事实上其他开源三方库也都不怎么用pch。 可以将需要导入的第三方头文件单独放到一个.h文件中,然后在pod库中的导入这个.h文件。 注意,需要将该.h 设置私有,尤其是当pod库中含有OC和Swift混编时,该操作极其重要,私有该.h文件示例: 1 s.private_header_files = 'Mi...

理解Runtime和RunLoop

Runtime Objective-C运行时是一个运行时库,它提供对Objective-C语言的动态属性的支持,它会尽可能地将许多决定从编译期推迟到运行时。这意味着Objective-C不仅需要编译器,还需要运行时系统来执行编译代码。 Runtime是由C和汇编写成,它实现了Objective-C到C的转化,即面向对象到面向过程的转化。 运行时应用 发送消息 动态方法解析 ...

Mac下安装Jekyll

安装命令行工具 1 xcode-select --install 安装 Homebrew 1 /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 使用 brew 安装 ruby 1 brew install ruby 配置环境变量...

ReactiveCocoa基本使用与MVVM+RAC框架搭建

简介 RAC是函数式+响应式编程(FRP)结合,git仓库:https://github.com/ReactiveCocoa/ReactiveCocoa 它由四大核心组件构成: 信号源:RACStream 及其子类; 订阅者:RACSubscriber 的实现类及其子类; 调度器:RACScheduler 及其子类; 清洁工:RACDisposable 及其子类。 ...

摄影札记

地点:中山公园。 地点:故宫西北角 地点:鼓楼附近 地点:玉渊潭公园 地点:雕塑公园 地点:石景山游乐园 地点:榆园 地点:果园附近 地点:植物园 地点:家乡

Git常用命令(备忘)

克隆 1 git clone git_respository_url 创建git仓库 1 git init 本地提交 1 2 3 4 5 // 先添加文件,‘.’指所有文件,指定选中文件,在后边加上文件名字 git add . // 提交 git commit -m '更新内容' 删除文件 1 git mv 文件名 添加git仓库地址 1 git remote ...

使用 Cocoapod 创建私有库步骤

在git远端创建私有库仓库 cd 到本地私有库创建的目录下 添加到pod repo 1 pod repo add SpecName SpecURL 生成项目 1 pod lib create SpecName 替换 Classes 目录下的文件 ...

在WebView中添加长按手势,保存图片

首先要创建UIWebview, 然后直接添加长按手势如下: 1 2 3 //创建长按手势对象, 并添加到webview上 UILongPressGestureRecognizer *longtapGesture = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longtap:)]; [w...