gpt4 book ai didi

iphone - 弧: Is this approach correct

转载 作者:行者123 更新时间:2023-12-03 21:17:25 28 4
gpt4 key购买 nike

这听起来可能是一个新手问题,但我是 iOS 开发新手。

我在我的项目中跟踪了代码,该项目启用了 ARC,但我在执行时遇到错误(访问错误),并且想了解问题的原因并解决它。

按下某些按钮后,将在 MTClassA.m 文件中调用以下代码

-(void) someMethod
{
for (int i = 0; i < N; i++) {
...
(param1 and param2 are location variables)
...
mFlickr = [[MTFlickr alloc] initWithParam1:param1 param2:mparam2];
mFlickr.delegate = self;
[mFlickr fetchImages];
}
}

MTClassA.h 头文件中 mFlickr 被声明为 MTFlickr* mFlickr,因此默认使用 __strong 限定符。

fetchImages类的回调函数如下

- (void)didRecieveImageLinksFromFlickr:(NSArray*)response 
param1:(NSString*)param1 param2:(NSString*)param2 {
...
}

所以基本上我想知道在 for 循环中以这种方式创建 mFlickr 对象并期望回调能够正常工作是否正确,如果不正确,请建议需要更改什么?

附注我需要将 mFlickr 更改为局部变量吗?如果是,我应该如何保证 param1 和 param2 方法是我在 for 循环中为教学迭代传递的方法?

最佳答案

您正在循环中创建 mFlickr 对象的多个实例,并且可能将它们分配给同一个实例变量。在 ARC 下,对实例变量的赋值将自动释放以前的值,因此您的 mFlickr 对象一创建就会被销毁(最后一个除外)。

大概您的 mFlickr 对象正在将自身设置为 URL 请求的委托(delegate),由于请求的委托(delegate)不再存在,因此该回调可能会失败。

如果您要创建多个实例,您应该将它们存储在数组实例变量中。回调应包含对已返回的特定实例的引用,并且在此时,您将其从数组中删除。

关于iphone - 弧: Is this approach correct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9766393/

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