无法从包装在 NSValue 中的结构中获取价值
Cant get value from struct wrapped in NSValue
我需要将结构 AudioStreamBasicDescription
传递给随机视图控制器。为此,我创建了一个单例 class 并且我想将 AudioStreamBasicDescription
存储在该单例 class.
中
当另一个视图控制器需要使用 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 和单例 asbd 声明为
AudioStreamBasicDescription asbd; // description of the audio
我该如何解决这个问题?
问题(我相信你知道)是这些行:
AudioStreamBasicDescription desc;
asbd=[value getValue:desc];
那不是你的称呼 getValue:
。有两处错误:
您需要提供(您所说的desc
)缓冲区的地址,而不是(如您所言)未初始化变量的名称。
您没有将结果分配给任何东西 (asbd=
)。没有结果。该值进入缓冲区(您试图将其设置为 desc
)。
所以,我想你想说的(别逼我)是:
[value getValue:&desc];
我需要将结构 AudioStreamBasicDescription
传递给随机视图控制器。为此,我创建了一个单例 class 并且我想将 AudioStreamBasicDescription
存储在该单例 class.
当另一个视图控制器需要使用 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 和单例 asbd 声明为
AudioStreamBasicDescription asbd; // description of the audio
我该如何解决这个问题?
问题(我相信你知道)是这些行:
AudioStreamBasicDescription desc;
asbd=[value getValue:desc];
那不是你的称呼 getValue:
。有两处错误:
您需要提供(您所说的
desc
)缓冲区的地址,而不是(如您所言)未初始化变量的名称。您没有将结果分配给任何东西 (
asbd=
)。没有结果。该值进入缓冲区(您试图将其设置为desc
)。
所以,我想你想说的(别逼我)是:
[value getValue:&desc];