gpt4 book ai didi

ios - 实例变量的奇怪行为 - 在某些时候无法访问

转载 作者:行者123 更新时间:2023-11-28 09:20:38 26 4
gpt4 key购买 nike

我遇到了一个奇怪的错误,如果我检查它是否存在于闭包中,作为我的类 (ImagePostStructure) 的实例变量的 PFObject 将奇怪地不存在。此外,通过闭包内部的外部变量引用该变量将在运行时解决该问题,但 PFObject 实例 var 仍然会消失并且以后根本无法访问。

下面是我的类中初始化 PFObject 的相关部分:

class ImagePostStructure {

var myObj: PFObject?
var image: UIImage?
...other variables...
init(inputObj: PFObject) {
//called when retrieving object (for viewing, etc)
myObj = inputObj;
...
}

下面是同一个类中的一个方法,我在其中从我的 PFObject 加载图像文件。

func loadImage(finishFunction: (imgStruct: ImagePostStructure, index: Int)->Void, index: Int) {
if (!image) {
var imgFile: PFFile = myObj!["imageFile"] as PFFile;
//comment immediate line below
var obj = self.myObj; //<----setting an external reference for my closure
imgFile.getDataInBackgroundWithBlock( { (result: NSData!, error: NSError!) in
if (!error) {
//get file objects
self.image = UIImage(data: result);
NSLog("This runs: \(self)");

//comment immediate line below
NSLog("This also runs \(obj)"); //<----commenting this causes error

NSLog("This does NOT run if above is NOT commented \(self.myObj!)");
NSLog("This does NOT run if above is NOT commented \(self.myObj!.objectId)");

finishFunction(imgStruct: self, index: index);
}
});
}
else {
finishFunction(imgStruct: self, index: index);
}
}

如果我在 NSLog 中注释引用 PFObject 实例变量的行,那么我就不能再从 self 访问 PFObject 实例变量。每当我尝试访问“myObj”时,无论是从类内部还是外部,我得到的错误是:

EXC_BAD_ACCESS (code=EXC_I386_GPFLT)

以前,当我的“myObj”不是可选变量时,我得到的错误是:

EXC_BAD_ACCESS (code=1, address=0x20)

我最好不要以这种方式编程,因为我一直在我的程序的其他地方使用“myObj”,它从地球表面消失已经给我带来了很多超出这种方法的问题。

我已经对设置或移动“myObj”的位置进行了文本搜索,它只在程序的其余部分被读取(并且在我创建对象后无论在哪里读取它都会出错)。我还检查了执行时“myObj”是否为零,并且在尝试读取变量时出错(因此“if(self.myObj)...”出错)。左下角的变量资源管理器显示 self 当时有一个 myObj 所以我认为它也没有设置为 nil 。

我已经尝试查找这两个错误。对于第二个,我只发现了一些看似无关紧要的晦涩实例,而第一个似乎只是暗示地址未对齐的一般错误。

此代码之前也适用于 Xcode 6 beta 3(我今天升级到 4),因此这也一定是 Xcode6 beta 4 所做的问题/事情...任何帮助将不胜感激

编辑:我怀疑这是一个 ARC 错误,因为代码错误并不总是在同一行。出于某种原因,我怀疑 PFObject 正在被取消引用和取消分配,即使我的类(class)与它有很强的联系......

最佳答案

您使用的是哪个 SDK?我注意到 Xcode6B4 有一个错误,访问实例变量是一个问题,有时是不可能的。 Apple 开发者论坛中有几个主题。

你用 Xcode6B3 试过吗?

关于ios - 实例变量的奇怪行为 - 在某些时候无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24897993/

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