Reflection 如何使用低级运行时API动态创建NSMutableArray? 简介

Reflection 如何使用低级运行时API动态创建NSMutableArray? 简介,reflection,nsmutablearray,objective-c-runtime,Reflection,Nsmutablearray,Objective C Runtime,因此,我一直在试验中定义的Objective-C低级运行时API,我不确定,但我怀疑Apple在特定的子类中使用了一些运行时魔术,即doing magic。我打赌NSMutableArray虽然是可见名称,但不是真正的实现。过去也有过类似的情况。我只是偶然发现了一种解决方法,它。。。作品我已经更新了要点,以显示它的工作 基本上,不调用类_createInstance,而是显式地向NSMutableArray类对象发送alloc消息。这项工作: id array = objc_msgSend(ns

因此,我一直在试验中定义的Objective-C低级运行时API,我不确定,但我怀疑Apple在特定的子类中使用了一些运行时魔术,即doing magic。我打赌NSMutableArray虽然是可见名称,但不是真正的实现。过去也有过类似的情况。

我只是偶然发现了一种解决方法,它。。。作品我已经更新了要点,以显示它的工作

基本上,不调用类_createInstance,而是显式地向NSMutableArray类对象发送alloc消息。这项工作:

id array = objc_msgSend(nsmutablearray, sel_registerName("alloc"));
id arrayAfterInit = objc_msgSend(array, sel_registerName("init"));

这让我们不禁要问:class_createInstance的意义何在?那么我正在为它创建一个新的SO线程…?

是的,毫无疑问,一些苹果的魔法正在幕后进行。我想我更多的是寻找解决方案/解决办法,而不是为什么。。。
id arrayAfterInit = objc_msgSend(nsmutablearray, sel_registerName("arrayWithCapacity:"), 10);
id array = objc_msgSend(nsmutablearray, sel_registerName("alloc"));
id arrayAfterInit = objc_msgSend(array, sel_registerName("init"));