问题标签 [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 投票
3 回答
289 浏览

iphone - iOS应用程序,类突然消失,在alloc中崩溃

这是一个奇怪的问题。当我一直在处理我的应用程序时,时不时会出现这个问题,然后它总是神秘地消失了。今天它拒绝消失。

我的应用程序使用两个视图控制器来处理自动旋转。有时,Objective-C 找不到我的课程。例如 [OneViewController alloc] 会崩溃。我添加了一个函数来捕捉这种状态,即使我在运行我自己的一行代码之前调用它,事情仍然是坏的。我以此来证明无论是什么错误,都与我可能编写的任何错误代码无关。

任何人都知道为什么universalGoodness不会是一个常数?

如果我让它运行到 alloc 的调用,这就是堆栈跟踪的样子...

0 投票
1 回答
2449 浏览

ios-simulator - class_getClassMethod 通常返回 nil(似乎只适用于类级别的方法)

我目前正在尝试使用来自http://sudzc.com/的一些生成代码 此代码并不完全适合我的 Web 服务,因此我尝试将类别添加到一些生成的类中,并使用它们与原始类交换它们的实现来自“objc/runtime.h”的method_exchangeImplementations。(我可以直接修改生成的代码,但我想避免它)。

这是我在 MyAppAppDelegate 中执行的代码 - applicationDidFinishLaunching 方法

正如我的问题所述,几乎所有这些 class_getClassMethod 都返回 nil ......我使用了调试器,所以我知道 'theClass' 设置正确。唯一找到的方法是 Soap 类的方法,它们都是类级别 (+) 方法。但从网上的各种例子中,我得出结论,它也应该适用于其他人......

这是我对 MyAppAppDelegate.m 的包含:

我也测试了我的类别并且它们有效,我可以从“originalClass”对象调用类别方法。

我想我做错了什么,但我看不到什么......或者也许 class_getClassMethod 确实应该只适用于类级别的方法?

何最后一件事,我在模拟器上开发,而不是设备:)

欢迎任何想法!

谢谢

0 投票
4 回答
8966 浏览

ios - 在子类中拦截 Objective-C 委托消息

我有一个 UIScrollView 的子类,我需要在其中内部响应滚动行为。但是,视图控制器仍然需要监听滚动委托回调,所以我不能直接窃取组件中的委托。

有没有办法保留名为“delegate”的属性并只收听沿它发送的消息,或者以某种方式在内部劫持委托属性并在运行一些代码后向外转发消息?

0 投票
5 回答
7011 浏览

objective-c - Objective-C 中的选择器是向对象发送消息的另一种方式吗?

Objective-C 中的选择器是向对象发送消息的另一种方式吗?我真的不明白为什么或如何使用它们。

0 投票
2 回答
1440 浏览

objective-c - *(id *)((char *)object + ivar_getOffset(ivar)) 和 object_getIvar(object, ivar) 有什么区别

根据Objective-C 运行时参考

ivar_getOffset 返回实例变量的偏移量。

ptrdiff_t ivar_getOffset(Ivar ivar) 讨论 对于 id 类型或其他对象类型的实例变量,调用 object_getIvar 和 object_setIvar 而不是使用此偏移量直接访问实例变量数据。

在 runtime.h 中声明

为什么是这样?object_getIvar 对对象类型做了什么?

编辑:将问题从下标(void *)更改为(id *)。

0 投票
4 回答
3982 浏览

objective-c - 实现Objective-C的根类需要什么?

我试过这段代码:

使用没有任何框架的 LLVM/Clang,编译时不会出现以下错误:

所以我加了libobjc.dylib。代码已编译,但抛出此运行时异常:

我意识到根类需要一些实现,但我不知道下一步该怎么做。创建一个新的根类需要什么?对此有什么规范吗?

0 投票
2 回答
228 浏览

objective-c - Objective-C 内存管理

我对objective-c的内存管理有一些疑问,

比方说:

我认为str1会有一个tests 内容的副本:str1将指向包含 的内存(堆)的一个地址msg,该地址与 所指向的地址不同test。对?

关于str2:
1.它存储什么?,我猜指向的地址相同test,但它会将引用计数器test增加到2。2
.当我更改测试的内容时,str2有什么?我想它仍然指向msg

关于str3:这是不正确的,对吧?,有什么作用assign

谢谢。

奖金问题:

我应该在更改其内容之前发布测试吗?

0 投票
1 回答
279 浏览

objective-c - 如何使用新异常(@throw…)使用 Objective-C 构建 Ruby 扩展?

我在 Objective-C 中构建了一个 Ruby 扩展。现在我想使用@throw/@catch 等代替基于宏的异常处理和自构建错误处理。

我正在使用 GCC 附带的 GNU 运行时。
当我使用我的扩展程序运行我的 Ruby 应用程序时,它会在发生异常时立即转储核心。abort() 来自 GNU Objective-C 运行时 (libobjc/exception.c:375):

由于我编译了-fobjc-exceptions我认为_Unwind_RaiseException正在调用。

有没有办法在 Ruby 扩展中使用 Objective-C 异常?

0 投票
2 回答
2568 浏览

ios - 将浮点变量作为参数传递

我正在尝试编写一个带float参数的方法并使用 performSelector 调用它,但是这样做时出错了。以下是我的代码:

在这里,进度和总数都是float可变的。

我正在尝试在不同的类中调用以下方法:

0 投票
1 回答
95 浏览

objective-c - Objective C 小语法说明

我大部分时间都看过这段代码。这里定义了两个变量名,在实现中它通过赋值来合成。做这样的事情的目的是什么?就像保留 2 个单独的变量名一样。这是一种约定吗?

测试.h

测试.m