问题标签 [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.
objective-c - 在运行时创建实例变量?
嘿,我在这里有点困惑..
我正在将 EyeTunes 框架用于一个小型学习项目。这是一个 iTunes 控制器。
该框架为我提供了一系列当前存在于 iTunes 中的播放列表。由于一些播放列表包含数千个曲目,我计划在“applicationDidFinishLaunching”方法中创建每个播放列表的曲目对象数组。(并保留这些数组)
这样,当绑定系统应该显示播放列表的曲目列表时,它现在不必加载整个列表。到目前为止还不错。。
现在,要为我想要做的每个播放列表创建这些轨道数组:
(allPlaylists 是一个包含所有 iTunes 播放列表 [ETPlaylist*]
的数组;ETPlaylist 使用它的“轨道方法”返回一个轨道数组)
所以
如何在每个枚举中为“arrayContainingTracks”设置不同的名称?
以及如何在必须声明所有实例 Var 的头文件中做到这一点?顺便说一句:数组在分配时会将其内容加载到内存中的关系级别达到多少?
objective-c - 使用类别扩展 iTunesApplication 类
我只是在学习如何使用 ScriptingBridges。我做了一种方法,可以慢慢淡化 iTunes 上的音量,并希望将其设为一个类别,以便我可以执行以下操作:
我为 NSSpeechSynthesizer 制作了另一个有效的类别,但我无法得到这个。我不断收到以下构建错误:
由于我不能包含符号,因此我可以做些什么特别的事情来使它工作?
谢谢,
瑞恩彭德尔顿
更新: 我只找到了一个解决方案,如下所示。它涉及 MethodSwizzling,所以我愿意接受更好的答案,但现在这就是我所拥有的。
.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 机器语言。
objective-c - 将字符串 ("MyExampleClass") 转换为类名 (MyExampleClass)
我想将字符串转换为类名。想象一下,我有一个字符串,它会发生变化,其中包含一个类名,例如 string "MyExampleClass"
。现在,我想创建一个类的对象MyExampleClass
。我必须从字符串中获取类名。我想做如下的事情。(将代码视为草图。)
这样做的正确方法是什么?
objective-c - Xcode——在项目中查找死方法
我很好奇是否有任何工具可以为此提供部分解决方案。由于 performSelector ,这是一个棘手的问题。. . 但是一个工具至少应该能够提出候选人,使人类的工作更容易。
objective-c - 什么决定了解决未实现方法的过程?
据我了解,未实现的方法通过以下方式解决:
- resolveInstanceMethod: /resolveClassMethod: 获得实现方法的机会
- forwardingTargetForSelector:有机会转发给委托人
- 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_msgForward
Foundation是做什么的吗?
objective-c - 可以判断一个子类是否覆盖了一个方法?
在做一个小项目时,我发现自己需要drawRect:
在我的一个UIView
子类中进行一些自定义绘图。我注意到当我覆盖子类drawRect:
的默认背景颜色UIView
已从透明更改为黑色时(默认背景颜色是指视图在其backgroundColor
属性为 nil 时自行绘制的颜色。)即使是空的drawRect:
或drawRect:
简单的调用[super drawRect:]
我也注意到这种行为。
这不是一个真正的问题,因为简单地将 a 设置backgroundColor
为非零值就可以,无论是否drawRect:
被覆盖。然而,它确实让我开始思考如何UIView
知道是否drawRect:
被子类覆盖。我知道 Objective-C 提供了确定一个类甚至它的超类是否响应某个选择器的工具。但是超类怎么可能知道它的子类是否覆盖了它的一个方法呢?而且,如果这种内省确实是不可能的,那么在我的例子中会发生什么?
objective-c - 有没有办法获取类的工厂实例?
我想使用 Objective-C 运行时来调用objc_msgSend()
工厂对象,我需要构建它的参数。我想像编译器那样使用工厂实例来指定它的第一个参数。有没有办法获取工厂实例?
iphone - 将应用程序静态链接到我自己定制的 obj-c 运行时有多简单?
我一直在使用运行时,并想出了一个替代 objc_allocateClassPair / objc_registerClassPair 的方法来生成匿名类。
匿名类对于我正在处理的事情非常方便,但我担心因为它们取决于运行时的不透明数据类型的实现方式(据我所知,运行时是一个共享库,可能会改变操作系统版本之间的这些类型的布局)它会自找麻烦。
更一般地说,运行时是开源的这一事实似乎为该语言开辟了一定的创造力潜力......
静态链接到我修改的运行时而不是共享的运行时有多简单?我是否必须弄乱编译器,还是更像链接到任何其他库。
还对这可能如何影响 App Store 批准感兴趣。
objective-c - 在运行时声明属性?
有没有办法在运行时在 Obj-C 中声明属性?我一直在寻找类似class_addMethod
但属性的东西。