问题标签 [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 - object_getInstanceVariable 适用于 float、int、bool,但不适用于 double?
我必须在这里object_getInstanceVariable
工作,但它似乎只适用于浮点数、布尔值和整数,而不是双精度数。我确实怀疑我做错了什么,但我一直在绕圈子。
有效,并且 myFloatValue = 2.123
但是当我尝试
我明白了myDoubleValue = 0
。如果我尝试myDoubleValue
在函数之前设置,例如。,当我在调用double myDoubleValue = 1.2f
后读取它时,该值没有变化。object_getInstanceVariable
在上面的函数返回 2 之前设置myIntValue
为其他值getinstancevar
,即。它已经改变了。
然后我尝试了
如果我这样做,ivar_getName(tmpIvar)
我会得到“someDouble”,但myDoubuleValue = 0
仍然!然后我尝试ivar_getTypeEncoding(tmpIvar)
并得到应有的“d”。
总而言之,如果typeEncoding = float
它有效,如果它是双精度数,则结果未设置,但它正确读取了变量并且返回值(Ivar)也是正确的。
我一定是在做一些我看不到的基本错误,所以如果有人能指出,我将不胜感激。
objective-c - 获取任意类的类方法列表
如何获取特定类的类方法列表?我试过使用在中class_copyMethodList
声明的函数<objc/runtime.h>
,但这只是给我实例方法。我还找到了一个函数,它为我提供了一个类方法的 Method,但前提是我首先拥有该方法的选择器 ( class_getClassMethod
)。
有任何想法吗?
谢谢,
戴夫
iphone - 发现用户的名字和姓氏?
我正在尝试以编程方式发现 iPhone 用户的名字和姓氏。这可能吗?调用这个...
..唉。遍历通讯录会找到所有通讯录记录,但不区分设备所有者和其他任何人(我可以告诉)。
鉴于 Mac 桌面地址簿在左下角用“我”覆盖来装饰所有者图标,我希望 iPhone 版本中可以提供这种信息。
马丁。
objective-c - 从 Objective-C 块创建 IMP
IMP
据我所知,Objective-C 中的类型表示一个函数指针。有没有办法IMP
从块指针中创建一个?谢谢你的想法。
iphone - 打印发送到 forwardInvocation 的参数:NSProxy 的子类
我想通过打印选择器和参数来拦截发送到代理对象的消息。即使代理没有实现它们并且没有目标对象。请帮忙。我查看了几个选项和 Apple 文档,但他们假设您已经知道目标对象。我想干净地做到这一点而没有内存问题。
谢谢,谢谢
objective-c - class_getClassVariable() 有什么作用?
如果实例变量属于类的实例,那么类变量将属于元类的实例,我应该认为。但我对 Objective-C 元类的经验告诉我,这不太可能。
我想知道class_getClassVariable
与 相比有什么作用class_getInstanceVariable
,以及为什么运行时没有 a class_setClassVariable
。
c - Objective-C 中的星号用法
我有一个关于在 Objective-C 中使用星号的问题。明确一点:我了解指针是什么以及程序 C 中的所有内容。不过我想知道两件事:
1) 为什么所有(引用)Objective-C 对象都是指针?为什么不是普通变量?(即 NSArray 数组 = [[NSArray alloc] init];)
2)为什么在调用方法时省略星号?
谢谢!
objective-c - Objective-C 中的星号用法:相关问题
我有几个与此相关的问题:Asterisk usage in Objective-C
NSArray 数组;在本地范围内将是堆栈上“分配”的对象。NSArray *数组;表示由一大块内存支持的对象,通常从堆中分配。
你怎么知道什么时候在堆栈和堆上分配了一些东西?堆栈上的所有局部变量都是堆上的指针吗?
因为您没有取消引用指向对象的指针,并且指向对象的指针在方法实现本身中至关重要。当你说...
呵呵
objective-c - Objective-C 属性赋值返回赋值?
说我有以下内容:
然后:
查看 的返回值-[MyClass setFoobar:]
,人们可能会假设这一行将打印I set 'foobar' to ''
,因为赋值似乎没有返回任何内容。
然而 - 幸运的是 - 这个任务按预期运行,并且代码打印I set 'foobar' to 'BAZ!'
. 不幸的是,这感觉像是一个矛盾,因为调用的 setter 的返回值掩盖了赋值返回分配给它的值的事实。起初我认为这mcInst.foobar = @"BAZ!";
是进行两次调用而不是一个块:首先是 setter,然后是 getter 以收集返回值。但是,使用调用来检测 setter 和 getter 方法NSLog
证明情况并非如此。