OC基础
请叫我马老师
iOS开发两年经验,希望不远的将来成为老司机
展开
-
objc_msgSend 调用时报错Implicitly declaring library function ‘objc_msgSend‘ with type ‘id (id, SEL, ...)‘
objc_msgSend 直接调用原创 2022-09-01 21:46:56 · 664 阅读 · 0 评论 -
KVC 和 KVO
原文:https://www.objc.io/issues/7-foundation/key-value-coding-and-observing/中文译文:https://objccn.io/issue-7-3/本文是截止目前我看到的最好的KVO,KVC的文章,特此mark一下Key-value coding (KVC) 和 key-value observing (KVO) 是两种...转载 2018-11-24 21:35:43 · 370 阅读 · 0 评论 -
[NSDate distantPast]与[NSDate distantFuture]分别是什么意思?
今天被问到了这个问题,虽然对问题进行了答复,但是事后感觉还是没有描述清楚该问题,这里整理一下这个小问题:[NSDate distantPast]:表示过去的某个不可达到的事件点[NSDate distantFuture]:表示未来的某个不可达到的事件点以上是回答的原话,但更直接的描述我觉得应该是:将时间与整数类比,则:[NSDate distantPast]等同与负无穷大;...原创 2019-02-01 18:24:34 · 6874 阅读 · 0 评论 -
iOS基础---Block朝花夕拾
Block是总最常用的iOS特性之一,常见的问题相信大家都知道,这里我们列一些不太常见的情形。第一、block无法捕获C语言数组,如果想捕获C语言的数组,需要使用指针;如: const char text[] = "hello"; void(^test)(void) = ^(void){ printf("%c",text[2]); };...原创 2019-04-28 22:52:49 · 382 阅读 · 0 评论 -
iOS基础---OC runtime篇一之基本概念
OC的runtime是基于C语言实现的objective-C 的动态运行时机制,是iOS开发者最基础的知识,虽然互联网上相关的介绍多如牛毛,但是这种最基础的机制,每个开发者都需要有自己的理解与整理。基本概念第一、struct和union由于runtime是基于C实现的,里面有大量的C预研数据结构,如果对C语言不太熟悉,理解起来未免费劲。所以,这里首先需要搞清楚这两个概念:struc...原创 2019-04-20 17:40:40 · 416 阅读 · 0 评论 -
iOS基础---OC runtime篇二之对象dealloc后发生了什么?
对象的dealloc调用后发生了什么?本文对应的源码见:https://github.com/huangturen/objc-runtime第一、最简单的类(没有任何成员变量,没有任何引用的类)其dealloc的过程为何?我们创建一个类TestObject1,使其继承自NSObject,在main函数中创建一个TestObject1的临时变量,观察其dealloc过程:stati...原创 2019-05-11 00:22:29 · 1043 阅读 · 0 评论 -
iOS基础---OC runtime篇零之优秀文章集锦
第零篇---------巨人的肩膀本篇我们收集优秀的关于runtime相关的文章,持续更新:一、你不知道的TaggedPointer:https://www.jianshu.com/p/eee8cd705f0a文章清晰的描述了TaggedPointer的机制,对初次阅读runtime源码有很好的帮助二、什么是Non-pointer isa:http://www.seal...原创 2019-05-10 23:50:25 · 190 阅读 · 0 评论 -
iOS基础---OC RunLoop篇
RunLoop注意点:第一、线程安全问题:OSX/iOS 系统中,提供了两个这样的对象:NSRunLoop 和 CFRunLoopRef。CFRunLoopRef 是在 CoreFoundation 框架内的,它提供了纯 C 函数的 API,所有这些 API 都是线程安全的。NSRunLoop 是基于 CFRunLoopRef 的封装,提供了面向对象的 API,但是这些 API 不是线...原创 2019-05-16 17:44:41 · 234 阅读 · 0 评论