objective-c-runtime相关内容

如何在Objective-C中在运行时查找字符串常量?

我的公司开发了一个广告SDK,可以调解其他广告网络。在运行时,它使用 NSClassFromString 检查其他广告网络是否存在,如果它们存在则发送这些类消息。 这适用于Objective-C对象,但是如何在运行时加载字符串常量?在这种情况下,我想检查只能通过字符串常量提供的SDK版本( extern NSString * VungleSDKVersion; ) 解决方案 您可以使 ..
发布时间:2018-08-30 18:28:18 移动开发

object_setClass到更大的类

我正在使用 object_setClass(id对象,Class cls)更改某些对象的类。我正在将类更改为原始类的子类。然后我设置一些仅在子类中定义的属性,并且似乎工作正常。 我有点惊讶,这是有效的,因为 object_setClass ,据我所知,不会重新分配对象,它只会更改 isa 指针。如果子类实例比原始类实例大得多(意味着有更多的ivars),我看不到对象如何按预期工作。 这 ..
发布时间:2017-07-22 12:03:34 移动开发

拦截/以编程方式设置IBOutlet属性

问题: 有没有办法以编程方式和以自动方式设置IBOutlet属性属性设置)?也许有一些“IBOutlet设置”例程,我可以用我自己的专门的代码拦截? 背景: b 导致上述问题的问题源于以下事实:运行以下方法时未设置“IBOutleted”大小约束(宽度和高度)(这是一种替换“占位符”视图的方法从IB的真实视图): +(UIView *)replaceWithNibView ..
发布时间:2016-12-29 12:47:19 移动开发

Swizzling和超级

我正在通过存储原始的实现来调用UIResponder及其所有子类的canPerformAction:withSender:方法。在由类名称键入的字典中; 这似乎在某些情况下运行良好,但是在原始实现时失败了调用超级。 这里可能出现什么错误? -original 与 -custom : p> - (void)custom { [self custom] // calls ..
发布时间:2016-12-09 02:28:16 移动开发

如何编写iOS应用程序纯粹在C

我在这里阅读了 Objective-C之前的学习吗? 通常我会用纯C代码替换一些Obj-C代码(毕竟你可以混合它们,一个Obj-C方法可以完全,纯C代码) 这是真的吗? 是否可以纯粹用C编程语言构建iPhone应用程序? 解决方案 Damn,花了我一段时间,但我得到了: main.c: b #include ..
发布时间:2016-12-08 14:04:17 移动开发

NSObject类是今天Objective-C运行时库的一部分(而不是Foundation组件)?

查看 Mac OS X 10.8版本的Objective-C运行时库源代码,我注意到它有一个 NSObject.mm 文件。顾名思义,它有 NSObject 类实现,以及内置的自动释放池和保留计数实现。 然而,Mountain Lion之前的ObjC运行时库的版本没有实现 NSObject 类(他们没有 NSObject .mm 文件,您可以在 Mac OS X 10.7的Objective ..

为什么Objective-C对象必须动态分配?

为什么必须动态分配Objective-c对象?为什么我必须让它指向一个对象,不像在C + +我可以创建他们在堆栈? 谢谢。 解决方案 主要原因:不知道要保留多少堆栈大小。 动态消息在这种情况下无关紧要,因为设置正确的“ vtable'在初始化时是微不足道的。 在c ++中,堆栈对象的大小总是已知的(如果它错了,你知道预期什么)。一个objc alloc / init序列可以返 ..

将字符串(“MyExampleClass”)转换为类名(MyExampleClass)

我想将一个字符串转换为类名。想象一下,我有一个字符串,它改变了,包含一个类名,例如,字符串“MyExampleClass”。现在,我想创建一个 MyExampleClass 类的对象。我必须从字符串中获取类名。我想做类似下面的事情。 (考虑代码只是一个草图。) NSString * classNameStr =“MyExampleClass”; id theClass = [UICla ..
发布时间:2016-12-06 22:53:07 移动开发

从Objective-C块创建IMP

Objective-C中的 IMP 类型代表一个函数指针,就像我所理解的。是否有任何方法从块指针创建 IMP ?感谢您的想法。 解决方案 由于这是写入的,现在有iOS和Mac OS X中的API,直接进入IMPs。我写了一个网络日志帖子,说明API(imp_implementationWithBlock())。 一个块实际上是一个包含一点元数据,到块中包含的代码和在块内捕获的cons ..

为什么不应该在Objective C中使用objc_msgSend()?

Apple的Objective C Runtime Guide指出,你不应该在自己的代码中使用objc_msgSend(),并建议使用methodForSelector:。 在代码中调用objc_msgSend()的危险是什么? 解决方案 原因#1:错误的样式 - 多余的和不可读的 编译器自动生成 objc_msgSend()(或其某种变体)。如果你知道类和编译时发送的选择器, ..
发布时间:2016-12-06 17:50:07 移动开发

运行时编程动态方法时使用ARC编译错误

我想在Objective-C上做一些运行时编程。 为了做到这一点我覆盖了 resolveClassMethod 方法。 不幸的是我想出了一些编译错误,活动: 错误:选择器'dynamic'没有已知的类方法 如果我使用gcc或clang没有ARC( -fno-objc-arc 选项传递),一切正常,除了警告而不是错误。 我知道ARC需要知道调用的方法的名称,以了解如何使用返 ..

访问是从单元测试模拟类变量静态变量

有一个Objective-C运行时库函数(的不会的)或一组能够在Objective-C检测静态的(准一流水平)变量的函数?我知道我可以使用一个类访问方法,但我希望能够在不写我的code“为测试框架”进行测试。 的或者的,有一个不起眼的普通的C技术的外部访问静态瓦尔?请注意,此信息对单元测试的目的,它不一定是适合生产使用。我意识到this'd违背静态瓦尔的意图......同事开始讨论这个话题,我在 ..
发布时间:2016-08-22 14:32:46 移动开发

如何Objective-C的运行实例的根元类和其他类的描述?

我想实现一个基本的面向对象的ANSI C运行库和使用Objective-C作为指导。 他们好像是三部分组成。 A类描述,类接口和类实现。为了要实例化的类接口,如果运行时已使用类的描述已经实例化的类对象使用Class对象实例化一个人的对象熟悉的方法只能发生。 那么,在第一次运行静态分配提供使用Class对象实例的能力,所有的类定义?或者,如果他们是动态分配(初始调用),怎么样?是它的运行循环的一 ..
发布时间:2016-08-19 13:37:59 C/C++

在Objective-C使用星号

我有关于使用在Objective-C星号的问题。只是要清楚:我知道指针是什么,一切都在程序C.我想,虽然两件事情: 1)为什么所有(引用)的Objective-C对象的指针?为什么不普通的变量? (即NSArray的阵列= [[NSArray的页头]初始化];) 2)调用方法时,你为什么忽略了星号? 谢谢! 解决方案 1)为什么所有(引用) Objective-C的对象的指针? ..
发布时间:2016-08-18 14:20:09 移动开发