无法从NSValue中包含的struct中获取值

时间:2015-05-14 19:38:45

标签: ios objective-c audio struct singleton

我需要将结构AudioStreamBasicDescription传递给随机视图控制器。为此,我创建了一个单例类,并且我想将AudioStreamBasicDescription存储在该单例类中。

当其他视图控制器需要使用AudioStreamBasicDescription时,我想获取该结构中的值。

组:

sharedCache.asbdValue=[NSValue valueWithBytes:&asbd objCType:@encode(AudioStreamBasicDescription)];

得到:

sharedCache=[JITCaches sharedManager];
//AudioStreamBasicDescription asbd from singleton
NSValue *value =sharedCache.asbdValue;
AudioStreamBasicDescription desc;
asbd=[value getValue:desc];

我得到的错误是

'AudioStreamBasicDescription'(又名'struct AudioStreamBasicDescription')参数为不兼容类型void

我将asbd和singletons asbd声明为

AudioStreamBasicDescription asbd;   // description of the audio

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

问题(我相信你知道)就是这些问题:

AudioStreamBasicDescription desc;
asbd=[value getValue:desc];

这不是你打电话给getValue:的方式。有两件事是错的:

  1. 您需要提供(您所说的desc)缓冲区的地址,而不是(正如您所做)名称未初始化的变量。

  2. 您不会将结果分配给任何内容(asbd=)。没有结果。该值将进入缓冲区(您尝试将其设置为desc)。

  3. 所以,我认为你想说的话(不要抱我这个)是:

    [value getValue:&desc];