Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 实例变量的奇怪行为-在某些时间无法访问_Ios_Swift_Parse Platform_Xcode6 - Fatal编程技术网

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

Ios 实例变量的奇怪行为-在某些时间无法访问,ios,swift,parse-platform,xcode6,Ios,Swift,Parse Platform,Xcode6,我遇到了一个奇怪的错误,如果我在闭包中检查PFObject是否存在,作为类(ImagePostStructure)实例变量的PFObject将奇怪地不存在。此外,通过闭包内部的外部变量引用该变量将在运行时修复该问题,但PFObject实例var仍然会消失,以后根本无法访问 下面是初始化PFObject的类的相关部分: class ImagePostStructure { var myObj: PFObject? var image: UIImage? ...other

我遇到了一个奇怪的错误,如果我在闭包中检查PFObject是否存在,作为类(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);
    }
}
以前,当我的'myObj'不是可选变量时,我得到的错误大致如下:

EXC_BAD_ACCESS (code=1, address=0x20)
我最好不要以这种方式编程,因为我一直在我的程序的其他地方使用“myObj”,它从地球表面消失给我带来了许多超出这种方法的问题

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

我试着查找这两个错误。对于第二个例子,我只发现了几个模糊的例子,这些例子似乎不相关,而第一个似乎只是暗示了地址不对齐的一般错误

这段代码以前也在Xcode6Beta3中工作过(我今天升级到了4),所以它肯定也是Xcode6Beta4所做的一个问题/事情…任何帮助都将不胜感激

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

您正在使用哪个SDK? 我注意到Xcode6B4有一个bug,访问实例变量是一个问题,有时是不可能的。苹果开发者论坛上有几个帖子


你用Xcode6B3试过了吗?

我不知道这是否是你出错的原因,但是你在闭包中使用了一个非弱引用
self
,这将导致一个强引用循环,如下所述:现在我用Xcode6B3,它在那里工作得很好。我现在把错误放在一边继续开发,当我回到更新或者6B5出来时,我最终会更新这个线程。我99%确定这是一个释放错误,因为当我运行闭包时,我在闭包中使用的变量被释放。
EXC_BAD_ACCESS (code=1, address=0x20)