问题标签 [nsvalue]
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.
ios - 使用 NSValue 包装一个 C 指针
我有一个 C 类型的指针变量:
如何转换cTypePointer
为NSObject
类型,反之亦然?
我应该使用NSValue
吗?这样做的正确方法是什么NSValue
?
ios - 使用 NSValue 进行包装和解包
在我的项目中,我有这样的功能:
我需要使用函数performSelector:onThread:withObject:waitUntilDone:在另一个线程上调用此函数,如下所示:
但是函数参数的类型是NSError**
. 我正在考虑重构函数的参数类型,-(void)doSomething:
并将NSError**
类型NSValue*
作为NSValue*
参数传递。
这意味着,我需要将&error
(类型为NSError **
)包装成 aNSValue
并将其作为参数传递,然后再将其解包。如何NSError**
用NSValue
类包装和解包?
objective-c - Swift - SCNVector4 到 NSValue 的数组?
如何将向量数组转换为 NSValue?例如,单个 SCNVector4 有一个方便的启动,但我如何将它用于数组?
喜欢:
=== 上下文 ===
我想使用着色器修改器(在 SceneKit 中)将点传递给着色器。着色器中的代码是:
我正在尝试将这些点传递给着色器:
这行不通。如果我有一个向量 ( uniform vec4 u_point;
),我可以这样做:
那行得通。类似地,如果着色器使用长度为 1 的数组(即uniform vec4 u_points[1];
),则之前的绑定也可以工作。所以听起来如果我可以传递长度为 4x7=28 的向量而不是数组,我应该会很好
==== 尝试 ====
1/ NSNumber 的 NSArray
正如评论中提到的,setValue
可以接受任何输入,所以我尝试使用 NSNumber 的 NSArray:
但这不起作用
2/ SCNVector3 的 NSArray:没用
3/ SCNVector3 的 NSValue 的 NSArray:没用
4/ NSNumber 的 NSArray 的 NSArray:没用
如果 Apple 有一些好的文档,那就太好了……
ios - ObjC:区分 NSValue 和 NSNumber
我有一些代码,我将在其中接收未知类型的对象。它可以是一个NSString
, , 一个包含在 a或其他类NSNumber
中的标量:NSValue
我需要确定 NSValue 中哪里有标量类型。
问题是识别一个 NSValue 包装的标量与一个 NSNumber。由于 NSNumber 继承自 NSValue 并且两者都是类集群,所以我很难将它们整理出来。
所以:
[value isKindOfClass:[NSValue class]]
... 将 NSNumbers 视为 NSValues。
[value isMemberOfClass:[NSValue class]]
...不识别 NSValues 因为实例是具体的子类型。
任何人都知道如何做到这一点?
swift - 如何在 Swift 3 中将字典表示为 NSValue?
我有以下字典:
我需要将其存储为 NSData 变量,为此必须首先将其转换为 NSValue,我尝试按以下方式进行操作:
只遇到错误:
无法将“Void”(又名“()”)类型的值转换为指定类型“NSValue”
我已经看到建议使用的 SO 答案:
但这也会产生错误:
类型 'UnsafeMutablePointer<_>' 没有成员 'load'
那么,如何在 Swift 3 中将字典转换为 NSValue 呢?
ios - NSData vs NSValue ?如何在 sendMIDISysExEvent:(NSData *)midiData 中封装 C 结构
我正在尝试找出sendMIDISysExEvent:(NSData *)midiData
一种方法来重新调整音乐应用程序中的一些 MIDI 音符。我想ViewController
向Synth
班级发送一条 MIDI 消息以更改 10 个音符的调音。用于重调一个音符的标准 MIDI 系统专用消息格式如下所示
legend: tt ll [kk xx yy zz]
(NB - 与 MIDI 1.0 详细规范 4.2, p.49 略有不同)
typedef struct
可以使用单个而float
不是 auint8_t
来表示调谐频率,例如
播放视图控制器.h
仍然在.h
最后是浮点值...... (感谢这个答案)
播放视图控制器.m
但是,当我阅读此答案时,我开始询问如何根据将发送的信息来准备 MIDI 数据NSData
包sendMIDISysExEvent:(NSData *)midiData
。这个答案推荐作为封装C结构的更好方法,NSValue
就像我试图创建的那样,所以我很困惑。如果真的是这样,我很困惑为什么苹果会引入类似sendMIDISysExEvent:(NSData *)midiData
.
我的问题是:根据消息格式(在我上面的代码中概述),我将如何准备midiData
以便使用这种方法发送它?
结论
作为对接受的答案的回应,“原始二进制数据”的长度(根据字节数而不是数据类型NSData
定义)解释了和之间的显着区别NSValue
。这也表明sendMIDISysExEvent:(NSData *)midiData
仅设计用于处理数据字节,即uint8_t
而不是float.
。换句话说,明智的选择是根据 MIDI 调音标准的以下摘录使用字节来表达频率值
objective-c - 将 NSValues 转换为 CGPoint
我需要将NSValue
s 从字典转换为CGPoint
.
示例:我有一本字典,里面有 2 个项目:
当我尝试这个时,它给出了一个错误
macos - 在 NSMutableDictionary 中存储 dispatch_source_t
如果我尝试使用 dispatch_source_t 作为 NSMutableDictionary 中的键:
我收到警告:
我认为这是因为 dispatch_source_t 不使用 NSCopying 协议。我的解决方案是将 dispatch_source_t 填充到 NSValue 中:
这可以消除警告,但我不确定这是否是传递 dispatch_source_t 的正确方法。
ios - 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入中的类型无效(NSConcreteValue)
这是我的字典:
我在我的 API 调用中将此字典作为参数发送。
我的应用程序在这行代码崩溃:
这是它抛出的错误:
由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“JSON 写入中的类型无效 (NSConcreteValue)”
我知道 RoutePolyline 参数包含一个 NSValue (它应该是一个坐标数组)而不是任何对象类型,但我尝试了很多转换,但到目前为止没有任何效果。例如
objective-c - 如何在 Swift 中将自定义 Objc 结构转换为 NSValue?
我在 Objc 中定义了一个自定义结构
在 Objc 中,我可以将结构转换为 NSValue 使用
但是我怎样才能在 Swift 中做到这一点呢?