gpt4 book ai didi

objective-c - 从 iOS 4 过渡到 iOS 5+ARC : "Passing address of non-local object to _autoreleasing parameter for write-back" 期间的变量问题

转载 作者:行者123 更新时间:2023-11-29 11:19:21 25 4
gpt4 key购买 nike

我在 iOS 4 中执行此操作的“旧”方法是在头文件中声明对象并将该对象传递给回写以处理错误参数。

NSError *error;

由于我所知有限的原因,我无法在 iOS5 中继续此模式并收到错误消息:

“将非本地对象的地址传递给 _autoreleasing 参数以进行回写”

//Instantiate an instance of AVAudioSession object
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//Setup playback and Record
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&error ];

我的临时解决方案是这样做:

NSError *theError = nil;

//Instanciste an instance of AVAudioSession object
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//Setup playback and Record
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&theError];
//Activate session
[audioSession setActive:YES error:&theError];

这很烦人,因为我每次需要在 Xcode 中使用它时都必须创建这个本地对象。

我的问题是:在新的 ARC 范例中是否有更好的方法来做到这一点?

我在 stack overflow 中发现了一个类似的问题,处理这个问题有点...... here

最佳答案

如果您确实想使用 ivar NSError *error,处理这种情况的首选方法是:

NSError *theError = nil;
//...
[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:&theError];
if (theError != nil){
error = theError;
//Handle failure
}
[audioSession setActive:YES error:&theError];
if (theError != nil){
error = theError;
//Handle failure
}

我猜你的意思是完全忽略错误,如果我错了请原谅我。这可以通过简单地这样做来完成(尽管不推荐):

[audioSession setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
[audioSession setActive:YES error:nil];

关于objective-c - 从 iOS 4 过渡到 iOS 5+ARC : "Passing address of non-local object to _autoreleasing parameter for write-back" 期间的变量问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8056089/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com