我有一个方法AudioServicesCreateSystemSoundID,根据文档似乎需要传入的内存地址(* outSystemSoundID)。
来自Apple的网站......
OSStatus AudioServicesCreateSystemSoundID (
CFURLRef inFileURL,
SystemSoundID *outSystemSoundID
);
我有这个代码,当我在方法中创建一个本地对象时。该对象已正确分配给内存位置。
这将返回myTest,代码为:0(这就是我想要的)
SystemSoundID thisSoundID;
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), &thisSoundID
);
但这就是我想要做的。 (self.theSound我已经设置为SystemSoundID属性)。
这将返回myTest,错误代码为:4294967246(我不想要这个)
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), self.theSound
);
答案 0 :(得分:1)
编译器将self.theSound
转换为
[self theSound]
其中-(SystemSoundID)theSound
是(自动合成的)getter方法
你的属性(默认情况下)获取_theSound
实例的值
变量
因此您无法获取“属性的地址”并将其传递给函数。 你可以传递实例变量的地址:
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), &self->_theSound
);
绕过属性访问者。但我建议暂时使用 变量而不是:
SystemSoundID thisSoundID;
SystemSoundID myTest = AudioServicesCreateSystemSoundID
(
(__bridge CFURLRef)(url), &thisSoundID
);
self.theSound = thisSoundID;