UIButton 接触 IBAction 导致 EXC_BAD_ACCESS 与 ARC

2024-02-02

StackOverflow 上有一些问题,其中用户遇到了与我相同的问题。然而,他们的解决方案都不适合我的情况。 (看here https://stackoverflow.com/questions/1421793/normal-uibutton-causing-obj-stack-overflow-or-exc-bad-access-exception, here https://stackoverflow.com/questions/5712957/uibutton-exc-bad-access-error, here https://stackoverflow.com/questions/2801103/ibaction-uibutton-and-exc-bad-access and here https://stackoverflow.com/questions/2070204/exc-bad-access-with-ibaction对于我读过但没有发现有帮助的一些问题。)

就我而言,我有一个 NIB,其中有几个UIButtons,具有关联的控制器视图。该视图对于我的项目来说相对较旧,直到今天我才能够毫无问题地使用这些按钮。在进行了一些与按钮行为无关的代码更改后,我遇到了一个错误,导致应用程序崩溃,破坏了代码main()函数并给我一个EXC_BAD_ACCESS每当我触摸时都会出现错误消息any我的视图上的按钮。

如何或为何会发生这种情况?我实际上已经注释掉了几乎所有功能代码,尤其是我今天早些时候修改的代码,但我仍然无法阻止错误的发生。

我的项目正在使用自动引用计数,我以前没有见过这个错误。此外,我没有修改NIB,也没有修改IBAction与按钮相关联,所以我不知道是什么导致了这种情况。停止错误的唯一方法是取消链接我的UIButton在我的笔尖上IBAction我的控制器视图头文件中定义的方法。

我的用例的唯一“独特”方面是我在另一个子视图控制器中加载此视图的一个或两个实例。加载的破碎视图实例的数量取决于数组中对象的数量。下面是我用来实例化这些视图并将其加载为另一个视图的子视图的代码。

//Called else where, this starts the process by creating a view that 
//will load the problematic view as a sub-view either once or twice.
- (id)initWithPrimarySystemView:(SystemViewController *)svc
{
    //First we create our parent, container view.
    self = [super initWithNibName:@"ContainerForViewInstaniatedFromArrayObjs" bundle:nil];
    if (self) 
    {
        //Assign parent DataModel to local instance
        [self setDataModel:((DataModelClass*)svc.DataModel)];
        for (AnotherModel* d in DataModel.ArrayOfAnotherModels)
        {
            //Instantiate the SubViewController.
            SubViewController* subsvc = [[SubViewController alloc] 
                                            initWithNibName:@"Subview" 
                                          bundle:nil 
                                          subviewPosition:d.Position ];

            //Add the SubViewControllers view to this view.
            [subsvc.view setFrame:CGRectMake((d.Position-1)*315, 0, 315, 400)];
            [self.view addSubview:subsvc.view];
        }
        [self setDefaultFrame: CGRectMake(0, 0, 640, 400)];
    }
    return self;
}

这工作得很好,以前甚至没有对关联视图上的按钮造成任何麻烦,但是现在所有UIButton点击时会使应用程序崩溃。

SubViewController的初始化函数,以及viewDidLoad方法只包含创建新 ViewController 时添加的标准自动生成代码。

我可以做什么来解决或诊断这个问题?


请参阅我在您的代码中的评论:

{
    SubViewController* subsvc = [[SubViewController alloc] initWithNibName:@"Subview" bundle:nil subviewPosition:d.Position ];
    //!i: By default, subsvc is a __strong pointer, so your subview has a +1 retain count
    //    subsvc owns subsvc.view, so subsvc.view has a +1 retain count as well

    //Add the SubViewControllers view to this view.
    [subsvc.view setFrame:CGRectMake((d.Position-1)*315, 0, 315, 400)];

    [self.view addSubview:subsvc.view];
    //!i: This bumps subsvc.view to +2, as self.view strong-references it

    //!i: subsvc is going out of scope, so the reference count on subsvc will drop
    //    to 0 and it is dealloc'd.  subsvc.view's retain count drops to +1, as it
    //    is still referenced by self.view
    //
    //    Most likely, in -[SubViewController dealloc], you were not doing a 
    //    setTarget:nil, setAction:nil on the button.  Thus, the button now 
    //    has a dangling pointer and will crash when hit
}

要解决此问题,请将每个 SubViewController 实例添加到主视图控制器拥有的数组中。这将使 SubViewController 实例保持在周围以接收按钮点击。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIButton 接触 IBAction 导致 EXC_BAD_ACCESS 与 ARC 的相关文章

  • 如何使用 Visual Studio 2008 调试 CUDA 内核代码?

    嘿 我正在使用带有 CUDA 3 2 的 Visual Studio 2008 我正在尝试调试具有此签名的函数 MatrixMultiplication Kernel lt lt
  • iOS 中的内存泄漏,AVPlayer 永远不会被释放

    我使用了 AVPlayerDemo 示例苹果文档 https developer apple com library ios samplecode AVPlayerDemo Introduction Intro html并在其上编写了我自己
  • 在 SwiftUI 中折叠 doubleColumn NavigationView 详细信息,就像在 UISplitViewController 上折叠一样?

    因此 当我在 SwiftUI 中创建列表时 我可以 免费 获得主从拆分视图 例如 import SwiftUI struct ContentView View var people Angela Juan Yeji var body som
  • iPad 2 检测

    由于我没有 iPad 2 因此我需要知道调用 UIDevice currentDevice model 时它返回什么 我以为它只返回 iPad 但看来我错了 有人可以告诉我吗 Thanks 检查是否有带摄像头的 iPad BOOL isIP
  • 从视频生成缩略图 - ios7

    我用这个作为参考 从视频 URL 或 iPhone SDK 中的数据获取缩略图 https stackoverflow com a 6027285 1145339 该方法使用 MPMoviePlayerController 类而不是 AVF
  • &(与符号)和 && 或 | 之间的区别(管道)和||在 Objective-C 中?

    我想知道Objective C是否关心我是写 还是 我相信一个与号 会或应该导致如果左侧已经为假 则右侧将不会被评估 这适用于 Objective C 吗 Yes 这些运算符在 C 和 Objective C 中的功能相同 就像在 C 中一
  • 在运行时动态创建核心数据模型

    是否可以在运行时从服务器上的一组实体生成核心数据模型 例如SharePoint 列表或 SQL MySQL Parse 我正在尝试采用动态路线 因为 SharePoint 列表 SQL Parse 中的字段可能会在将来随时添加 这意味着应用
  • 在 SKScene 上运行 SKTransition 是否会破坏原始 SKScene?

    在 SKScene 上运行 SKTransition 是否会破坏原始 SKScene 例如 SKTransition reveal SKTransition revealWithDirection SKTransitionDirection
  • 什么是已弃用的推送转场? (iOS 8)[重复]

    这个问题在这里已经有答案了 我不知道在这种情况下已弃用意味着什么 我是编程新手 正在 Xcode 6 中制作我的前几个应用程序 今天我正在制作一个待办事项列表应用程序 当连接到用户可以输入新待办事项以添加到主表的场景时 我被邀请使用推送转场
  • 如何在我的应用程序中添加应用内购买

    我想在我的应用程序中使用应用程序购买应用程序 但我不知道如何执行此操作 任何人都可以帮助我如何做以及源代码在哪里 给我链接或代码 这里有一堆链接 应用内购买编程指南 http developer apple com iphone libra
  • iOS 相互认证

    我正在尝试在 IOS 5 中实现相互身份验证 但遇到了麻烦 NSUnderlyingError Error Domain kCFErrorDomainCFNetwork Code 1200 An SSL error has occurred
  • iOS:如何在不降低 fps 的情况下播放音频?

    我正在使用 Sprite Kit 最好使用 Swift 库 为 iOS 9 开发游戏 目前 我正在使用 Singleton 在其中预加载音频文件 每个文件都连接到一个单独的 AVAudioPlayer 实例 这是一个简短的代码片段来了解这个
  • 在 iOS 5 中,我们可以邀请人们使用我们的应用程序或通过 Facebook 从应用程序发送好友请求吗?

    考虑X and Y是朋友Facebook他们都在各自的手机中安装了一个应用程序 但他们在这一点上并不是朋友应用程序的好友列表 那么现在 可以X 发送好友请求 Use Facebook sdk 3 1 https developers fac
  • 如何使用 iOS 可达性

    我正在开发一个使用网络的 iPhone 应用程序 iPhone 通过 HTTP 请求与我的服务器通信 并且应该可以在 WiFi 和 3G 上运行 我目前使用NSURLConnection initWithRequest向我的服务器发送异步请
  • 使用 UItableviewCell 实现 Google 地图

    我正在尝试在 UItableviewCell 组件内实现谷歌地图 我这样做的方法是在原型单元中定义 GMSMapView 然后使用 dequeueReusableCell 方法配置地图单元 但是 我尝试应用的任何更改都会失败 例如添加标记
  • 如何以编程方式设置设备(UI)方向?

    希望屏幕 UI 上的所有内容都能够从横向左向右旋转 反之亦然 我该怎么做呢 这是私人的吗 我知道 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation inte
  • mgwt - 以编程方式改变方向

    是否可以在 gwt mgwt 应用程序中更改强制执行特定的屏幕方向 可以说我希望用户始终以横向模式使用应用程序 这取决于 是作为phonegap应用程序 而不是在浏览器内部 如果您作为 Web 应用程序运行 则不需要t get any co
  • 是否可以扩展现有的 Objective-C 块?

    我有一个使用标头中定义的块的类 如下所示 property readwrite copy RequestSucceededBlock succeededBlock 该物业succeededBlock已经设置了一个块 有没有办法用另一个仍然调
  • UIStackView分布均匀填充

    所以 我有一个UIStackView其中包含四 4 UIViews 如果我删除其中一 1 个UIViews 其他三 3 个将填满UIStackView 我的问题 如何添加最大高度UIView这样它就不会填满整个空间UIStackView即使
  • 编写自定义 Eclipse 调试器

    EDIT 一定有某种方法可以解决这个问题 而无需编写全新的调试器 我目前正在研究在现有 java 调试器之上构建的方法 如果有人对如何获取 Java 调试器已有的信息 有关堆栈帧 变量 原始数据等 有任何想法 那将非常有帮助 我想要做的是我

随机推荐

  • Rails Byebug 没有停止应用程序

    我想使用 byebug 来调试我的应用程序 但应用程序永远不会停止 尽管我已经把byebug在我的代码中 这是我的 Gemfile group development test do Call byebug anywhere in the
  • 为什么使用 CvScalar

    我需要帮助来理解 CvScalar 的功能到底是什么 例如下面的代码中 scalar 的任务是什么 for int i 0 i lt faces size i Point center Point faces i x faces i wid
  • C 编译中出现错误“错误:杂散'\342'”,“杂散'\200'”,“杂散'\234'”[重复]

    这个问题在这里已经有答案了 I used 记事本 https en wikipedia org wiki Notepad 2B 2B编写代码 当我尝试编译它时 我使用cc lab7 c o test1编译它 我得到了一堆杂散 342 杂散
  • setup.py install_require 带选项

    我需要添加rjsmin通过我的依赖install require在 setup py 中 rjsmin提供了一种通过使用禁用 c 扩展的方法 without c extensions像下面这样切换 python setup py insta
  • 如何在Android上启动NotificationListenerService

    我想使用NotificationListenerService 访问Android 手机上的通知 我检查了很多教程 但找不到他们在哪里调用该服务 我应该在MainActivity 上使用bindService 还是startService
  • 使用 doctest 测试异常链接和回溯输出

    如何使用 doctest 测试 多重回溯 看来要用几个ELLIPSIS and
  • 在 Angular 中页面加载(模态显示)后焦点输入后在 Safari iOS 中显示键盘

    我需要在页面加载或显示输入模式后设置焦点并打开键盘 简单的 focus 适用于 Android 以及 iPad 的横向模式 然而 在纵向模式和 iPhone 上 焦点已设置 但未显示键盘 我还尝试了添加并关注附加元素的解决方案 但它不适用于
  • Python 变量作用域和类

    在Python中 如果我定义一个变量 my var 1 2 3 并尝试访问它 init 类的功能 class MyClass def init self print my var 我可以访问它并打印my var没有说明 全局 my var
  • VSCode 找不到 python(Anaconda 安装)

    我刚刚在 windows10 上安装了 anaconda3 5 2 0 和 vscode 1 27 2 实际上是删除并重新安装 并尝试在终端上执行最简单的 python 代码 但是 我收到以下错误 jac p50 mnt c Users j
  • 对于方案中的每个和地图

    这两个功能在方案上有什么区别吗 我正在使用 Dr Racket R5RS 语言制作一个模拟器游戏 我无法决定哪个更好 for each从左到右计算列表元素上的给定函数 并丢弃函数的返回值 它非常适合对列表中的每个元素进行副作用操作 map以
  • Java中的构造函数继承

    您能告诉我以下代码中的问题吗 class boxdemo1 public static void main String args boxweight weightbox new boxweight 2 3 5 4 System out p
  • 如何在 Windows 命令行上使用 Unicode 字符?

    我们有一个项目在团队基础服务器 https en wikipedia org wiki Azure DevOps Server TFS 中包含非英语字符 当尝试编写一些与构建相关的事情的脚本时 我们偶然发现了一个问题 我们无法通过 给命令行
  • 为 Github Pages 中托管的 Jekyll 博客设置自定义子域

    我创建了一个由 Jekyll 驱动的博客 并通过 GitHub Pages 托管它 现在 我想设置一个子域 blog example com 但无法使其工作 我添加了一个 CNAME 文件 其文本为 blog example com 我在我
  • 在 Windows 8.1 上安装 PHP 5.6 后 Apache 2.2 无法启动

    我正在 Windows 8 1 计算机上设置开发环境 我成功安装了Apache 2 2 并下载了php 5 6 3 Win32 VC11 x86 我在 httpd conf 的末尾添加了以下几行 PHPIniDir C PHP5 LoadM
  • c++ opencv图像不显示在boost线程内

    我正在开发c 我在那里使用的应用程序boost opencv 并创建 boost 线程并调用该线程内的函数 该函数已得到 opencv imread 我使用 cvLoadimage 检查过 但得到了相同的结果 但程序无法完成并且程序退出 请
  • KafkaConsumer 连接到错误的代理,因此无法消费

    我根据 Kafka 文档中的示例编写了一个小脚本 import org apache kafka clients consumer KafkaConsumer import org slf4j LoggerFactory import co
  • 如何在 Java 8 中生成给定长度的列表?

    我想通过调用方法 x 次来创建列表 或一般集合 在 Python 中 它会是这样的 self generated self generate for in range length 我尝试在 JDK 8 中编写类似的代码 this gene
  • PHP microtime 基准函数时间比较

    我目前正在使用这个函数来对一些 php 脚本进行基准测试 脚本获取执行所需的微时间 并将其写入服务器上的日志中 但我遇到的问题是我不知道什么是合适的时间 下面的脚本是我的一些时间 任何人都可以告诉我我想要在什么样的时间范围内吗 置于页面开头
  • Laravel 解决闭包的依赖关系

    Laravel 能够自动在控制器构造等中注入依赖项 例如 class Test public function construct Request request App make Test 控制器的构造函数将接收适当的请求外观 有没有办法
  • UIButton 接触 IBAction 导致 EXC_BAD_ACCESS 与 ARC

    StackOverflow 上有一些问题 其中用户遇到了与我相同的问题 然而 他们的解决方案都不适合我的情况 看here https stackoverflow com questions 1421793 normal uibutton c