问题标签 [objective-c-runtime]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
263 浏览

objective-c - 在运行时创建实例变量?

嘿,我在这里有点困惑..

我正在将 EyeTunes 框架用于一个小型学习项目。这是一个 iTunes 控制器。

该框架为我提供了一系列当前存在于 iTunes 中的播放列表。由于一些播放列表包含数千个曲目,我计划在“applicationDidFinishLaunching”方法中创建每个播放列表的曲目对象数组。(并保留这些数组)
这样,当绑定系统应该显示播放列表的曲目列表时,它现在不必加载整个列表。到目前为止还不错。。

现在,要为我想要做的每个播放列表创建这些轨道数组:
(allPlaylists 是一个包含所有 iTunes 播放列表 [ETPlaylist*]
的数组;ETPlaylist 使用它的“轨道方法”返回一个轨道数组)

所以

  1. 如何在每个枚举中为“arrayContainingTracks”设置不同的名称?
    以及如何在必须声明所有实例 Var 的头文件中做到这一点?

  2. 顺便说一句:数组在分配时会将其内容加载到内存中的关系级别达到多少?

0 投票
3 回答
742 浏览

objective-c - 使用类别扩展 iTunesApplication 类

我只是在学习如何使用 ScriptingBridges。我做了一种方法,可以慢慢淡化 iTunes 上的音量,并希望将其设为一个类别,以便我可以执行以下操作:

我为 NSSpeechSynthesizer 制作了另一个有效的类别,但我无法得到这个。我不断收到以下构建错误:

由于我不能包含符号,因此我可以做些什么特别的事情来使它工作?

谢谢,
瑞恩彭德尔顿

更新: 我只找到了一个解决方案,如下所示。它涉及 MethodSwizzling,所以我愿意接受更好的答案,但现在这就是我所拥有的。

0 投票
3 回答
5756 浏览

.net - Objective C 真的编译了吗?是不是更像 Visual Basic / .NET 运行时?那么是什么阻止它移植到其他平台呢?

从语法上讲,它是 C 的超集。但是由于消息是在运行时发送和处理的,这意味着它不能是像 c 这样的纯编译语言,但它需要像 Visual Basic 或 .Net 运行时这样的运行时。

那么是什么阻止它通过将此运行时转换为 .NET Framework 或 Java JVM 之类的东西来移植到其他平台呢?

注意:当我说 VB 时,它当然是最后一个版本 6,它编译为字节码,所以你为什么要假装 Java 或 .Net 与 VB6 根本不同,除了可移植性,它是相同的原则:参见类似于 Java,Visual Basic 被编译成中间语言称为“字节码”。字节码由 Visual Basic 运行时模块翻译成 x86 机器语言。

阅读更多:http ://www.answers.com/topic/visual-basic#ixzz19iJd3wjA

与 Java 类似,Visual Basic 被编译成一种称为“字节码”的中间语言。字节码由 Visual Basic 运行时模块翻译成 x86 机器语言。

0 投票
4 回答
16788 浏览

objective-c - 将字符串 ("MyExampleClass") 转换为类名 (MyExampleClass)

我想将字符串转换为类名。想象一下,我有一个字符串,它会发生变化,其中包含一个类名,例如 string "MyExampleClass"。现在,我想创建一个类的对象MyExampleClass。我必须从字符串中获取类名。我想做如下的事情。(将代码视为草图。)

这样做的正确方法是什么?

0 投票
2 回答
4628 浏览

objective-c - Xcode——在项目中查找死方法

我很好奇是否有任何工具可以为此提供部分解决方案。由于 performSelector ,这是一个棘手的问题。. . 但是一个工具至少应该能够提出候选人,使人类的工作更容易。

0 投票
1 回答
665 浏览

objective-c - 什么决定了解决未实现方法的过程?

据我了解,未实现的方法通过以下方式解决:

  1. resolveInstanceMethod: /resolveClassMethod: 获得实现方法的机会
  2. forwardingTargetForSelector:有机会转发给委托人
  3. forwardInvocation: 有机会处理它认为合适的方法。

这个三步过程在哪里定义?我想自己处理它,因为 NSInvocation 可能对我的需求来说太重了。我已经在运行时源上戳了一下,但实际上什么也看不到。

看起来旧的运行时会在接收器上调用 forward:args: 来执行此操作,但这似乎已经从新的运行时消失了。我猜这个过程必须由框架而不是运行时定义,因为如果运行时依赖 Cocoa 到需要 NSInvocation 来处理消息的程度,那就很奇怪了。它可能是在 NSObject / NSProxy 上调用的未记录方法吗?

编辑:

看起来运行时声明但从未定义一个 C 函数,当 objc_msgSend 找不到实现时调用该函数:

id objc_msgForward(id object,SEL message,...);

我不为 Apple 工作,所以我不知道 Foundation 如何实现这一点,但至少在 Cocotron 的情况下,他们使用:

添加一个forwardSelector:arguments:方法似乎不起作用,所以我猜这是 Cocotron 特有的。有人知道objc_msgForwardFoundation是做什么的吗?

0 投票
1 回答
283 浏览

objective-c - 可以判断一个子类是否覆盖了一个方法?

在做一个小项目时,我发现自己需要drawRect:在我的一个UIView子类中进行一些自定义绘图。我注意到当我覆盖子类drawRect:的默认背景颜色UIView已从透明更改为黑色时(默认背景颜色是指视图在其backgroundColor属性为 nil 时自行绘制的颜色。)即使是空的drawRect:drawRect:简单的调用[super drawRect:]我也注意到这种行为。

这不是一个真正的问题,因为简单地将 a 设置backgroundColor为非零值就可以,无论是否drawRect:被覆盖。然而,它确实让我开始思考如何UIView知道是否drawRect:被子类覆盖。我知道 Objective-C 提供了确定一个类甚至它的超类是否响应某个选择器的工具。但是超类怎么可能知道它的子类是否覆盖了它的一个方法呢?而且,如果这种内省确实是不可能的,那么在我的例子中会发生什么?

0 投票
2 回答
95 浏览

objective-c - 有没有办法获取类的工厂实例?

我想使用 Objective-C 运行时来调用objc_msgSend()工厂对象,我需要构建它的参数。我想像编译器那样使用工厂实例来指定它的第一个参数。有没有办法获取工厂实例?

0 投票
1 回答
101 浏览

iphone - 将应用程序静态链接到我自己定制的 obj-c 运行时有多简单?

我一直在使用运行时,并想出了一个替代 objc_allocateClassPair / objc_registerClassPair 的方法来生成匿名类。

匿名类对于我正在处理的事情非常方便,但我担心因为它们取决于运行时的不透明数据类型的实现方式(据我所知,运行时是一个共享库,可能会改变操作系统版本之间的这些类型的布局)它会自找麻烦。

更一般地说,运行时是开源的这一事实似乎为该语言开辟了一定的创造力潜力......

静态链接到我修改的运行时而不是共享的运行时有多简单?我是否必须弄乱编译器,还是更像链接到任何其他库。

还对这可能如何影响 App Store 批准感兴趣。

0 投票
2 回答
513 浏览

objective-c - 在运行时声明属性?

有没有办法在运行时在 Obj-C 中声明属性?我一直在寻找类似class_addMethod但属性的东西。