ios-应用偶尔会出现Exc_Bad_Access

问题描述

应用偶尔会出现Exc_Bad_Access

我的应用在许多线程中通过performSeleactoreOnMain线程方法调用下面的函数:

-(void) showAlert: (NSString *)message{
if ([NSRunLoop currentRunLoop] != [NSRunLoop mainRunLoop]) {
    NSLog(@"<< perform in main thread>>");
    [self performSelectorOnMainThread:@selector(showAlert:) withObject:message waitUntilDone:NO];
}
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Info" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
}

这个方法只在主线程中调用,然后偶尔会在警报:EXC_BAD_ACCESS崩溃。

请好心人指点怎么解决?

解决方案

你应该是忘了return
试试下面的办法

-(void) showAlert: (NSString *)message{
    if ([NSRunLoop currentRunLoop] != [NSRunLoop mainRunLoop]) {
        NSLog(@"<< perform in main thread>>");
        [self performSelectorOnMainThread:@selector(showAlert:) withObject:message waitUntilDone:NO];
        return;
    }
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Info" message:message delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
}
时间: 2024-08-29 11:59:39

ios-应用偶尔会出现Exc_Bad_Access的相关文章

iOS内存错误EXC_BAD_ACCESS的解决方法_IOS

iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里. 首先说一下 EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源在于对一个已经释放的对象进行release操作.举一个简单的例子来说明吧,首先看一段Java代码: 复制代码 代码如下: public class Test{ public static void main(String[] args){ String s = "

iOS开发:Xcode打包framework

  本人觉得这个打包framework还是一个比较重要的功能,可以用来做一下事情: (1)封装功能模块,比如有比较成熟的功能模块封装成一个包,然后以后自己或其他同事用起来比较方便. (2)封装项目,有时候会遇到这个情况,就是一家公司找了两个开发公司做两个项目,然后要求他们的项目中的一个嵌套进另一个项目,此时也可以把呗嵌套的项目打包成framework放进去,这样比较方便. 我们为什么需要框架(Framework)? 要想用一种开发者友好的方式共享库是很麻烦的.你不仅仅需要包含库本身,还要加入所有

IOS 9人机界面指南(4):UI元素

  4.1 栏 4.1.1 状态栏 状态栏展示了关于设备及其周围环境的重要信息. 默认(深色)内容 浅色 状态栏: 是透明的 始终固定在整个屏幕的上边缘 不要创建自定义状态栏. 用户依赖系统默认状态栏的一致性.就算你可能会在应用中隐藏它,也不宜定制一个新的UI来代替原有系统状态栏. 避免滚动内容直接透过状态栏显示. 你不会希望用户在滚动的时候看到五花八门的内容和状态栏自身的元素混合在一起.想要让用户感受到内容区域够大的同时,最大限度地保证可读性,请保证在状态栏后面添加一块背景,用以模糊出现在状态

移动产品设计之ios导航模式

导航始终是产品设计的重头戏,往往产品设计中90%的事情就是在做导航.在iphone中预置了3种可以直接使用的导航模式,平铺列表.标签页.树状结构,每种模式都配有不同的工具栏和控件.三种导航模式可以独立使用也可以混搭,让你的用户可以优雅的穿行与你的应用之中. 写在前面:刚开始接触移动产品设计的时候对着设计指南懵懵懂懂的感知了一下,但是还是不甚寥寥.最近读<触动人心>,发现作者对ios的导航模式的总结实在太棒了,于是写下这篇读书笔记. 导航始终是产品设计的重头戏,往往产品设计中90%的事情就是在做

iOS内存错误EXC

iOS开发,最郁闷的莫过于程序毫无征兆地就崩溃了,用bt命令打出调用栈,给出的是一堆系统EXC_BAD_ACCESS的信息,根本没办法定位问题出现在哪里. 首先说一下 EXC_BAD_ACCESS 这个错误,可以这么说,90%的错误来源在于对一个已经释放的对象进行release操作.举一个简单的例子来说明吧,首先看一段Java代码: public class Test{ public static void main(String[] args){ String s = "This is a t

iOS开发之浅谈MVVM的架构设计与团队协作

今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~). 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人了. 说道架构设计和团队

奔向三张,不破不立:一个iOS开发工程师的职业规划思考

  大前天下午快下班那会儿,跟念茜聊了一下各自的工作现状,发现她现在碰到的一些职业规划上的困惑,跟我在一年多前的情况非常相似.而我经过一年多来的不断思考和调整,已经基本明确了自己的职业规划,发展的方向变得越来越清晰,配合我个人较强的执行力,困惑越来越少,事情也正在朝着越来越好的方向发展.念茜和我是iOS开发行业中的普通年轻从业人员,因此我们的困惑具有一定的代表性.今天,我就跟大家说说这两年来我的职业规划心路历程,供大家参考.   看过书上自序部分的朋友都知道,我从读硕士开始,就已经进入iOS领域

手把手教你ARC——iOS/Mac开发ARC入门和使用

本文部分实例取自iOS 5 Toturail一书中关于ARC的教程和公开内容,仅用于技术交流和讨论.请不要将本文的部分或全部内容用于商用,谢谢合作. 欢迎转载本文,但是转载请注明本文出处:http://www.onevcat.com/2012/06/arc-hand-by-hand/ 本文适合人群:对iOS开发有一定基础,熟悉iOS开发中内存管理的Reference Counting机制,对ARC机制有听闻很向往但是一直由于种种原因没有使用的童鞋.本文将从ARC机理入手对这个解放广大iOS开发者

浅谈iOS Crash(一)

本文讲的是浅谈iOS Crash(一),一.捕获iOS Crash 1.设置异常断点并运行 设置异常断点.png 说明:设置Xcode异常断点后运行程序,发生Crash时,断点会定位到出错的代码行,但仅适用于开发阶段.线上APP的Crash还需要通过收集Crash机制来捕获Crash并记录在日志中. 2.Mach异常 和 Unix信号 iOS Crash发生时,先产生Mach异常(最底层的内核级异常),然后Mach异常在host层被ux_exception转换为相应的Unix信号,并通过thre