MUSHANK

Keep Hungry Keep Foolish

iOS开发|ARC下CF对象的内存管理

前言 ARC能够解决iOS开发中的绝大部分内存管理问题,但是对于底层CF对象(Core Foundation),由于不在ARC的管辖范围内,所以需要开发人员手动维护这些对象的引用计数。 CF对象的内存管理 底层的CF对象,大多都以XxxCreateWithXxx这样的方式创建,例如: // 创建一个CTFontRef对象 CFStringRef str = CFStringCreat...

iOS开发|KVO初探

Key Value Observing

前言 KVO(Key Value Observing),是观察者模式在Foundation中的实现。 原理 KVO原理简单介绍如下: 当一个object有观察者时,动态创建这个object的类的子类 对于每个被观察的property,重写其set方法 在重写的set方法中调用- willChangeValueForKey:和- didChangeValueForKey:...

iOS开发|面试题精选

iOS Interview Questions

1. 下面代码会出现什么问题(来源:Sunny) @property (copy) NSMutableArray *mutableArray; 答案: 添加/删除/修改数组内元素时,程序会因为找不到对应的方法而崩溃 使用了atomic特质会影响性能(尽管没有名为atomic的特质,但是如果某属性不具备nonatomic特质,那它就是原子的atom...

iOS开发|静态库创建

Cocoa Touch Static Library

简述 静态库通常用于隐藏功能实现代码,使用者只能通过头文件调用相关接口,而无法知道其中的实现细节。同样的还有动态库(动态链接库),两者之间的主要区别在于:静态库可以编译到我们的应用程序中,应用程序可以在没有静态库的环境中运行;而动态库不能被编译到我们的应用程序中,应用程序必须在有动态库的环境下才能正常运行。 下面简单介绍下如何创建静态库。 创建工程 Xcode -> Fi...

iOS开发|Xcode插件整理

Package Manager —— Alcatraz Install, paste this into your terminal: curl -fsSL https://raw.githubusercontent.com/supermarin/Alcatraz/deploy/Scripts/install.sh | sh Uninstall, del...

iOS开发|断言的使用

NSAssert

NSAssert Apple在Foundation.framework中定义了这样一个宏: #define NSAssert(condition, desc, …) 注:第一个参数condition为条件判断,若为false,则抛出异常,并显示第二个参数desc所描述的信息。 Example NSAssert(1 > 2, @"1 > 2 is fal...

iOS开发|Xcode项目兼容MRC与ARC文件

解决方案: 如果你的项目使用的是MRC模式,则为ARC模式的代码文件加入-fobjc-arc标签。 如果你的项目使用的是ARC模式,则为MRC模式的代码文件加入-fno-objc-arc标签。 注:添加标签方法如下: 打开target->Build Phases->Compile Sources 双击对应的*.m文件 在弹出的窗口中输入对应标签:-f...

iOS开发|CocoaPods Usage

1. Install MAC OS默认已有Ruby环境,所以可直接执行安装命令(升级CocoaPods也使用此命令): $ sudo gem install cocoapods 安装结束后,执行命令更新本地Pods依赖库Tree: $ pod setup 1.1 Problems may be occured 执行install...

macOS Usage

Display & hidden files Display hidden files $ defaults write com.apple.finder AppleShowAllFiles -bool true; killall Finder Don’t display hideen files $ defaults writ...

Git Usage

1. Local Repo 初始化 $ mkdir <diectory> // 创建目录 $ cd <diectory> // 切换目录 $ pwd // 查看当前目录 $ git init // 初始化仓库 $ ls -ah // 查看当前目录所含文件 提交文件 ...