Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.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
EXC_错误访问(代码=1),但仅在设备上,因为升级到带有IOS7.1b4的Xcode 5.1b4_Ios_Xcode - Fatal编程技术网

EXC_错误访问(代码=1),但仅在设备上,因为升级到带有IOS7.1b4的Xcode 5.1b4

EXC_错误访问(代码=1),但仅在设备上,因为升级到带有IOS7.1b4的Xcode 5.1b4,ios,xcode,Ios,Xcode,我有一个我自己编写的分段控件(UISegmenterControl),一旦选定的分段发生更改,它就会发送一条消息: - (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex { if(_selectedSegmentIndex != selectedSegmentIndex) { NSInteger segmentIndex = 0; for (UISegmenterControlSe

我有一个我自己编写的分段控件(UISegmenterControl),一旦选定的分段发生更改,它就会发送一条消息:

- (void)setSelectedSegmentIndex:(NSInteger)selectedSegmentIndex
{
    if(_selectedSegmentIndex != selectedSegmentIndex) {
        NSInteger segmentIndex = 0;

        for (UISegmenterControlSegment *segmentButton in self.segmentButtons) {
            if (segmentIndex == selectedSegmentIndex) {
                [segmentButton setSelected:YES];

                _selectedSegmentIndex = selectedSegmentIndex;

                if (self.target != nil) {
                    if ([self.target respondsToSelector:self.action]) {
                        objc_msgSend(self.target, self.action, self);
                    }
                }
            }
            else {
                [segmentButton setSelected:NO];
            }

            segmentIndex++;
        }
    }
}
objc_msgSend在my view控制器中触发(void)didChangeSegmentControl:(UISegmenterControl*)控件,同时将指针传递给分段控件本身

问题是,由于升级到XCode 5.1 beta 4和我的开发设备到IOS 7.1 beta 4,当didChangeSegmentControl启动时,我的代码在具有EXC_BAD_访问权限(代码=1)的设备上掉落

objc_msgSend和didChangeSegmentControl之间似乎丢失了指向分段控件(即“control”参数)的指针

最让我困惑的是,在我升级之前,这种情况是不会发生的,而且在分析应用程序时,无论是在模拟器上还是在我的设备上都不会发生。我想我要问的是:这看起来是我的代码的问题(在以前的IOS和/或Xcode上运行得非常好)还是最新的beta版的问题


如果您需要有关我的应用程序的更多信息,请告诉我。

您是否可以使用以下选项,而不是使用
objc\u msgSend

[self.target performSelectorOnMainThread:self.action with object:self waitUntilDone:YES]


另外,感谢您更新评论中的正确对象

错误发生在哪一行?如果没有完整的、符号化的崩溃日志,将很难提供帮助。而且,正如你提到的,这两个软件版本都是测试版。谢谢你的快速回复。错误发生在…-(void)didChangeSegmentControl:(UISegmenterControl*)控件在我的视图控制器中,其中“control”显示为Nil。是否可以使用
[self-performSelectorOnMainThread:self.action With Object:self.target waitUntilDone:YES]相反(我希望对象正确-请检查)?您是否绝对确定
objc\u msgSend
中的参数非零?嗯,我必须对它进行一些调整-我假设您的意思是键入[self.target performSelectorOnMainThread:self.action with object:self waitUntilDone:YES];但是,是的,已经完成了。非常感谢-现在开始阅读为什么这比我的方法更有效:)不要用字母
UI
开始你自己的班级名称。非常感谢。是的,我看到objc_msgSend是一个相当低级的函数,它不像performselectornmainthread方法那样为您管理线程。将来将避免使用前者。