ios - EXC_BAD_ACCESS(代码=1)但仅在使用 IOS7.1b4 升级到 Xcode 5.1b4 后的设备上

标签 ios xcode

我有一个自己编写的分段控件 (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 在我的 View Controller 中触发 (void)didChangeSegmentControl:(UISegmenterControl *) 控件,同时将指针传递给分段控件本身。

问题是,自升级到 XCode 5.1 beta 4 并将我的开发设备升级到 IOS 7.1 beta 4 后,当 didChangeSegmentControl 触发时,我的代码在设备上以 EXC_BAD_ACCESS (code=1) 失败。

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

这里最让我困惑的是,在我升级之前这并没有发生,并且在分析应用程序时在模拟器或我的设备上仍然没有发生。我想我想问的是:这看起来是我的代码的问题(在以前的 IOS 和/或 XCode 上以某种方式完美运行)还是最新的测试版有问题?

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

最佳答案

除了使用 objc_msgSend,您可以使用以下方法吗:

[self.target performSelectorOnMainThread:self.action withObject:self waitUntilDone:YES];

附言感谢您更新评论中的正确对象

关于ios - EXC_BAD_ACCESS(代码=1)但仅在使用 IOS7.1b4 升级到 Xcode 5.1b4 后的设备上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21353530/

相关文章:

IOS swift 如何在标签点击时在 TableView 中获取标签文本

iphone - XCode - 多个目标,多个*国际化*名称?

xcode - cocoa -Applescript : Placing a GUI in an applescript

iphone - 创建自定义 UIButton 类

ios - 性能工具数据偏高的原因可能是什么。 [显示在 Xcode VM 跟踪器中]

ios - IQKeyboardManagerSwift 'shared' 不可用 : Use view controller based solutions where appropriate instead

objective-c - 值插入模拟器但未显示在数据库表中

ios - 如何在 UIWebViewDelegate#didFailLoadWithError 中获取 NSURLRequest?

ios - UISlider 不会在将应用程序语言更改为 RTL 时翻转。 | iOS

ios - 每个 View Controller 一个 pixate 样式表?