gpt4 book ai didi

objective-c - 在运行时从类外部访问 Objective-C ivar

转载 作者:太空宇宙 更新时间:2023-11-04 05:03:32 25 4
gpt4 key购买 nike

我知道这个想法完全打破了封装,但假设我有以下类扩展:

@interface MyClass () {
int reallyImportantIvar;
}
// ...
@end

通常,该类的行为就像它在 Objective-C 层中应该的那样——发送和接收消息等。但是有一个(“公共(public)”)子例程,我需要最好的性能和非常低的延迟,所以我会更喜欢使用 C 方法。当然,如果我这样做,我将无法再访问 reallyImportantIvar,这是我执行关键任务的关键。

看来我有两个选择:

  1. 改为将实例变量设为静态变量。
  2. 通过 Objective-C 运行时直接访问实例变量。

我的问题是:选项 2 是否可行?如果可行,它的开销是多少? (例如,我是否仍在寻找 O(n) 算法来查找类的实例变量?)

最佳答案

实际上,如果C函数的定义在@implementation内类的 block ,然后它可以通过通常的object->someIvar访问该类的私有(private)ivars符号。因此,虽然您可以使用运行时来访问它,但我认为您不需要这样做。只需在 @implementation 中实现功能即可问题类的 block ,你应该没问题。

关于objective-c - 在运行时从类外部访问 Objective-C ivar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18939806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com