https://developer.apple.com/documentation/metal/heaps/image_filter_graph_with_heaps_and_fences?language=objc https://developer.apple.com/documentation/metal/reducing_the_memory_footprint_of_metal_apps?language=objc https://developer.apple.com/documentatio
为什么80%的码农都做不了架构师?>>> objective-c中,有类别可以在不修改源码的基础上增加方法 使用运行时库,必须要先引入 objc/runtime.h 可以使用的函数如下: OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_Associatio
由于swift是一门静态语言,所以没有Objective-C中的消息发送这些动态机制,dynamic的作用就是让swift代码也能有oc中的动态机制,常用的就是KVO。 使用dynamic关键字标记属性,使属性启用Objc的动态转发功能; dynamic只用于类,不能用于结构体和枚举,因为它们没有继承机制,而Objc的动态转发就是
八面玲珑的 objc_msgSend 此函数是消息发送必经之路,但只要一提 objc_msgSend,都会说它的伪代码如下或类似的逻辑,反正就是获取 IMP 并调用: id objc_msgSend(id self, SEL _cmd, ...) { Class class = object_getClass(self); IMP imp = class_getMethodImplementation(class, _cmd
一、定义 @synchronized是对mutex递归锁的封装 @synchronized(obj)内部会生成obj对应的递归锁,然后进行加锁、解锁操作 @synchronized 没有智能提示,因为苹果不推荐使用。 注: 源码查看:objc4中的objc-sync.mm文件 二、断点看 底层 @synchronized([self class]) { // objc_s
One can explicitly write @objc on any Swift declaration that can be expressed in Objective-C. @objc相关的参量只能修饰类、类的成员、扩展以及只能被类实现的协议; 下面开列修饰的情况和说明 一、无修饰 NSObject-derived classes no longer infer @objc A declarati
如果你曾经使用Objective-C做过并发编程,那你肯定见过@synchronized这个结构。@synchronized这个结构发挥了和锁一样的作用:它避免了多个线程同时执行同一段代码。和使用NSLock进行创建锁、加锁、解锁相比,在某些情况下@synchronized会更方便、更易读。 如果你从来没有使用过@synchron
swift class的虚函数表、扩展、@objc修饰的研究 工具: swiftc -emit-sil BaseClass.swift | xcrun swift-demangle > ClassFunc.silgen cat ClassFunc.silgen 目标: 1、@objc和@objc dynamic修饰的函数是否进入虚函数表; 2、虚函数的的派发机制是什么? 3、extension中的缺省修饰
Some Objective-C APIs—like target-action—accept method or property names as parameters, then use those names to dynamically call or access the methods or properties. In Swift, you use the #selector and #keyPath expressions to represent those method or pro