iOS
未读
浅谈iOS中的weak
__weak探究 程序中添加了一个 __weak 变量,查看调用堆栈,看到下一个调用的是 objc_initWeak 函数。 所以我们就 objc_initWeak 函数作为入口,探究 weak。 数据结构 首先了解以下的变量,这些变量在这章的数据结构、函数形参中使用: __weak id weak
iOS
未读
Objective-C Type Encodings
Objective-C Type Encodings 转自:nshipster,觉得再某些场景上有点用,就直接抄过来了。 @encode,@编译器指令 之一,返回一个给定类型编码为一种内部表示的字符串(例如,@encode(int) → i),类似于 ANSI C 的 typeof 操作。苹果的 O
iOS
未读
Objective-C:为什么分类中不能直接添加属性
为什么分类中不能直接添加属性,这个也是一个经典的面试题了。 搜了一些相关文章,再结合源码做了一个小小的总结。 其实通过这个问题,也可以一瞥 OC 中类的实现。 源码 先晒一下OC类和分类的部分源码: typedef struct objc_class *Class;
struct objc_cla
iOS
未读
iOS 截取整个 scrollview 图片
最近做的项目需要“分享图片”的功能,截屏不单单指当前屏幕可视区域,而是指整个 scrollView 区域,因为截屏的范围可自定义,所以只需要将 scrollview 的范围设置就可以,以下是相关代码: ///获取截屏图片
- (UIImage *)captureScrollView:(UIScrol
iOS
未读
objc源码分析-runtime-class
看了一段时间objc的源码,准备开个大坑,写一下了解到的东西,这一时半会是完工不了了,一篇一篇慢慢写吧。 先看一下官方对objc的介绍。 Objective-C is the primary programming language you use when writing software for
iOS
未读
Objective-C 中禁止调用指定的方法
在一些场景可能我们不希望用户调用默认的方法以避免一些无法控制的事情发生。 可以通过unavailable来禁用那些不想让用户调用的方法。 具体使用方法如下: // 外部调用将产生编译错误
- (instancetype)alloc __attribute__((unavailable("alloc
iOS
未读
OC优缺点以及常见bug
objc优点: Cateogies : 非常实用的扩展机制,可以很方便的为一个已有的类添加属性或者方法,而不需要笨拙的去继承他 Posing : 可以让一个类的对象动态的以其他类行为去执行,也许可以理解成动态replace所有的method(不确定是否可以这么理解) 动态识别,比较常见的动态语言的特
iOS
未读
runtime——运行时简单使用
运行时总结 什么是runtime? runtime是一套底层的C语言API(包含很多强大实用的C语言数据类型、C语言函数) 实际上,平时我们编写的OC代码,底层都是基于runtime实现的 也就是说,平时我们编写的OC代码,最终都是转成了底层的runtime代码(C语言代码) runtime有什么作
iOS
未读
iOS常用数据类型转换
开发过程中总会转换各种数据类型,很多人直接把常用的数据类型封装后使用,时间长了反而想不起来各个数据类型之间是如何转换的,在这里就做一个简单的总结,以备不时之需. NSString和NSData之间的相互转换 NSString 和 NSData之间的转换频率还是挺高的,尤其是JSON字符串和字典之间转
iOS
未读
关于NSNotificationCenter
通知(NSNotification) 一个完整的通知一般包含3个属性: - (NSString*)name; // 通知的名称
- (id)object; // 通知发布者(是谁要发布通知)
- (NSDictionary*)userI