标签: exc-bad-access

"Thread 6 com.apple.NSURLConnectionLoader:Program received signal:EXC_BAD_ACCESS"

该应用程序在启动后大约15秒崩溃,XCode刚刚在地址处断开,并弹出一个"Thread 6 com.apple.NSURLConnectionLoader:Program received signal:EXC_BAD_ACCESS"

我一直无法追踪问题.它在iOS 4上运行良好,但我猜这只是因为它更容忍bug或者其他东西.我已经尝试过在任何地方设置断点并逐步完成,在Zombies配置文件中的Instruments中运行它,但它只是炸弹而不告诉我在哪里.我没有警告和干净的分析,所以我有点不知所措.任何人都可以提供任何建议吗?谢谢.

回溯是:

(gdb) backtrace
#0  0x024fb939 in _dispatch_retain ()
#1  0x024fbc02 in dispatch_source_cancel ()
#2  0x0109e492 in _CFURLCacheDeallocate ()
#3  0x0205a4e3 in CFRelease ()
#4  0x010331b1 in HTTPProtocol::~HTTPProtocol ()
#5  0x0100c75d in CFClass::FinalizeObj ()
#6  0x0205a4e3 in CFRelease ()
#7  0x02110af0 in __CFDictionaryStandardReleaseValue ()
#8  0x020714b1 in __CFBasicHashDrain ()
#9  0x0205a4e3 in CFRelease ()
#10 0x01024237 in SocketStream::~SocketStream ()
#11 0x0100c75d in CFClass::FinalizeObj ()
#12 0x0205a4e3 in CFRelease ()
#13 0x01023e0b in SocketStream::finalize () …
Run Code Online (Sandbox Code Playgroud)

iphone xcode exc-bad-access objective-c ios

15
推荐指数
3
解决办法
2万
查看次数

Iphone核心数据在保存时崩溃

我目前正在使用Core Data编写Iphone应用程序,并且EXC_BAD_ACCESS在[managedObjectContext save:&& error]代码行中出现错误.只有在修改某些字段后才会发生此崩溃.更具体地说,我的实体有两个字符串字段(大约10个字段中的字段),它们从模式视图控制器(如文本编辑器)的返回中获取它们的值.崩溃也只发生在编辑这些字段之后,第一次将值放入其中工作正常.

我有格式构造函数字符串只有字符串的原因是因为我试图复制构造...不确定是否自动发生?想到可能会保留/释放来自那些字符串的消息(这两个来自模态视图控制器),在解雇模态视图控制器或其他东西时被释放.但不要猜测,因为它仍然不起作用.

这是崩溃的代码部分:

[EDITED]

        - (void)actionSheet:(UIActionSheet *)modalView clickedButtonAtIndex:    (NSInteger)buttonIndex
      switch(buttonIndex) {
              case 0: {
                if(message == nil) {
                  message = [NSEntityDescription insertNewObjectForEntityForName:@"MailMessage" inManagedObjectContext:self.managedObjectContext];
                }
                message.toString = txtTo.text;
                message.fromString = txtFrom.text;
                message.subjectString = txtSubject.text;
                message.backgroundColor = [NSNumber numberWithInt:[bgColor intValue]];
                message.textArray = [NSString stringWithFormat:@"%@", stringTextArray];
                message.htmlString = [NSString stringWithFormat:@"%@", stringHTML];
                message.timeStamp = [NSDate date];
                message.statusCode = [NSNumber numberWithInt:0];
                NSError *error = nil;
                if (![message.managedObjectContext save:&error]) {
                    abort();
                }   
                break;
               }
              case 1: {
             break;
              }
      }
      if(buttonIndex …
Run Code Online (Sandbox Code Playgroud)

iphone exc-bad-access core-data

14
推荐指数
2
解决办法
2万
查看次数

在断点处停止导致EXC_BAD_ACCESS

我的应用程序运行正常并且符合预期,但出于某种原因,当我放置断点时,单步执行/结束/恢复会导致程序因EXC_BAD_ACCESS而崩溃.如果我删除/禁用断点,则不会发生这种情况.

有什么建议?

debugging xcode breakpoints exc-bad-access ios

13
推荐指数
2
解决办法
5861
查看次数

EXC_BAD_ACCESS自动处理

我正在尝试为iOS构建自己的信号和未捕获的异常处理程序.为此,我使用以下两个函数:

NSSetUncaughtExceptionHandler(/*handler*/); 
Run Code Online (Sandbox Code Playgroud)

signal(/*signal const*/, /*signal handler*/);
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法使用EXC_BAD_ACCESS信号.是否有一些信号常量(如SIGABRT,SIGBUS)来捕获EXC_BAD_ACCESS?如果不是,我该如何处理?一些崩溃分析工具(lika PLCrashReporter,Crashlytics等)可以追踪它......

xcode exception-handling exc-bad-access crash-reports ios

13
推荐指数
1
解决办法
2万
查看次数

NSMutableAttributedString initWithData:在旋转时导致EXC_BAD_ACCESS

我在a中显示不同类型的内容,tableview并使用不同的自定义方法计算每个单元格的高度heightForRowAtIndexPath.

其中一个自定义方法意味着转换一些html NSMutableAttributedString,然后计算它的高度NSMutableAttributedString.
对于html转换,我使用新initWithData:方法.

一切都很完美,除非我旋转屏幕=>我每次都有一个exc_bad_access.

使用Instruments/Zombies,我已经能够找到错误,事实上就是这样initWithData:.

(当我删除此方法并创建一个"简单" NSMutableAttributedStringinitWithString,我可以根据需要更改方向,crash不再有).

知道为什么吗?

(顺便说一句,我的项目使用ARC)


Instrument/Zombie截图: 在此输入图像描述


调用的自定义方法heightForRowAtIndexPath:

<UtilitiesForFrontEndUI heightForFacebookAttributedText:>

+(CGFloat)heightForFacebookAttributedText:(NSString *)attributedText withWidth:(CGFloat)width
{
    NSAttributedString *formatedText = [self formatRawFacebookContentForFrontEndRichTextContents:attributedText];
    CGRect rect= [formatedText boundingRectWithSize:CGSizeMake(width, 1000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil];
    return ceilf(rect.size.height);
}
Run Code Online (Sandbox Code Playgroud)

使用initWithData进行html NSMutableAttributedString转换的自定义方法:

<UtilitiesForFrontEndUI formatRawFacebookContentForFrontEndRichTextContents:>

+(NSAttributedString *)formatRawFacebookContentForFrontEndRichTextContents:(NSString *)stringToFormat
{
    // THIS GENERATE EXC_BAD_ACCESS ON DEVICE ROTATION (WORKS IF NO ROTATION)
    NSData *dataContent = [stringToFormat dataUsingEncoding:NSUTF8StringEncoding]; …
Run Code Online (Sandbox Code Playgroud)

exc-bad-access ios nsmutableattributedstring ios7

13
推荐指数
1
解决办法
7152
查看次数

构建nspredicate时EXC_BAD_ACCESS

我正在计算生日和今天之间的月数.有了这个数字,我正在构建一个谓词来从核心数据中获取对象.虽然正确计算了月数(如日志所示),但在构建谓词时我得到了一个EXC_BAD_ACCESS.

这是我的代码:

    NSCalendar *gregorian = [[NSCalendar alloc]
                         initWithCalendarIdentifier:NSGregorianCalendar];

    NSUInteger unitFlags = NSMonthCalendarUnit;

    NSDateComponents *components = [gregorian components:unitFlags
                                            fromDate:birthdate
                                              toDate:today options:0];
    int months = [components month];
    NSLog(@"months: %ld", (long)months);
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"(alter_min_monat > %@)", months];
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

exc-bad-access nspredicate ios

13
推荐指数
1
解决办法
3234
查看次数

在UI线程上懒洋洋地加载CGImage/UIImage会导致口吃

我的程序显示一个水平滚动表面,从左到右平铺UIImageViews.代码在UI线程上运行,以确保新显示的UIImageViews分配了一个新加载的UIImage.加载发生在后台线程上.

一切都很好,除了每个图像变得可见时都有口吃.起初我以为我的后台工作者在UI线程中锁定了一些内容.我花了很多时间查看它,并最终意识到UIImage在UI线程第一次变得可见时正在做一些额外的延迟处理.这让我很困惑,因为我的工作线程有明确的解压缩JPEG数据的代码.

无论如何,在预感上,我写了一些代码,以渲染到后台线程上的临时图形上下文中 - 当然,口吃也消失了.UIImage现在正在我的工作线程上预先加载.到现在为止还挺好.

问题是我的新"强力懒惰的图像"方法是不可靠的.它会导致间歇性的EXC_BAD_ACCESS.我不知道UIImage在幕后实际上在做什么.也许它正在解压缩JPEG数据.无论如何,方法是:

+ (void)forceLazyLoadOfImage: (UIImage*)image
{
 CGImageRef imgRef = image.CGImage;

 CGFloat currentWidth = CGImageGetWidth(imgRef);
 CGFloat currentHeight = CGImageGetHeight(imgRef);

    CGRect bounds = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);

 CGAffineTransform transform = CGAffineTransformIdentity;
 CGFloat scaleRatioX = bounds.size.width / currentWidth;
 CGFloat scaleRatioY = bounds.size.height / currentHeight;

 UIGraphicsBeginImageContext(bounds.size);

 CGContextRef context = UIGraphicsGetCurrentContext();
 CGContextScaleCTM(context, scaleRatioX, -scaleRatioY);
 CGContextTranslateCTM(context, 0, -currentHeight);
 CGContextConcatCTM(context, transform);
 CGContextDrawImage(context, CGRectMake(0, 0, currentWidth, currentHeight), imgRef);

 UIGraphicsEndImageContext();
}
Run Code Online (Sandbox Code Playgroud)

并且EXC_BAD_ACCESS发生在CGContextDrawImage行上.问题1:我是否允许在UI线程以外的线程上执行此操作?问题2:什么是UIImage实际上"预加载"?问题3:解决这个问题的官方方法是什么?

感谢阅读所有这些,任何建议将不胜感激!

iphone lazy-loading exc-bad-access uiimage cgimage

12
推荐指数
3
解决办法
1万
查看次数

尝试创建新的NSDictionary时EXC_BAD_ACCESS

NSDictionaries在循环中创建并将其添加到一个循环中我遇到了麻烦NSMutableArray.

基本上我只想更改键的名称,但由于我找不到一个函数,我去了下面的代码:

- (NSMutableArray *)getCategoriesForChannel:(int)channelId {
    NSDictionary *data = [self call:@"get_categories.ashx"];
    NSArray *categories = [data objectForKey:@"categories"];
    NSMutableArray *returnArray = [NSMutableArray
                          arrayWithCapacity:[categories count]];

    for(NSDictionary *category in categories) {
        [returnArray addObject:[NSDictionary dictionaryWithObjectsAndKeys:
                         [category objectForKey:@"Channel_id"], @"id",
                         [category objectForKey:@"Channel_name"], "@name", nil]];
    }
    return returnArray;
}
Run Code Online (Sandbox Code Playgroud)

但是app总是在它到达addObject:方法时退出并抛出一个EXC_BAD_ACCESS.我认为它与内存管理有关,但由于我没有真正的C-background,我不知道如何解决这个问题.有人可以指出我正确的方向吗?提前致谢!

memory-management exc-bad-access objective-c

12
推荐指数
1
解决办法
4040
查看次数

崩溃在actionForLayer:forKey:

在更改一些UILabel的帧时,我有一个神秘的EXC_BAD_ACCESS.崩溃是随机的,通常我必须重复几分钟的条件.

启用NSZombies以及其他内存调试标志(NSDebugEnabled,MallocStackLogging)没有帮助,崩溃仍然保持不透明:只是一个BAD_ACCESS,控制台中没有消息.目标似乎是正确和活跃的,所以它看起来不像是一个解除分配的内存问题.

为了获得更多信息,我将UILabel子类化并重写了崩溃函数:

@implementation TestUILabel
- (id<CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)event {
    return [super actionForLayer:layer forKey:event];
}
@end
Run Code Online (Sandbox Code Playgroud)

它在super的方法中崩溃,但在检查时一切似乎都是正确的(打印retainCount为'self'和'layer'分别给出3和2):

(gdb)po self

<TestUILabel:0x6ac2800; baseClass = UILabel; frame =(173 174; 0 0); text ='54m²'; opaque = NO; autoresize = LM + TM; autoresizesSubviews = NO; userInteractionEnabled = NO; 动画= {position = <CABasicAnimation:0xe07ba60>; }; layer = <CALayer:0xbf1b950 >>

(gdb)po事件

界限

(gdb)po层

<CALayer:0xbf1b950; position = CGPoint(173 174); bounds = CGRect(0 0; 0 0); delegate = <TestUILabel:0x6ac2800; baseClass = UILabel; frame =(173 174; 0 0); text …

iphone exc-bad-access calayer uiview ios

12
推荐指数
1
解决办法
3771
查看次数

Facebook中的exc_bad_access sdk登录Xcode 8 beta

最近我开始添加我的应用程序IOS 10功能,而我遇到了一个奇怪的错误:

当我在嵌入式浏览器中单击facebook本身的确认按钮时,通过浏览器使用facebook SDK进行身份验证时,应用程序崩溃了.

在此输入图像描述 不幸的是,这个bug没有提供信息,控制台没有告诉我任何关于它的信息,并且没有调用堆栈来查看发生此异常的位置.

用于演示此错误的两点导致:1.如果登录是通过系统帐户进行​​登录,但只有在浏览器中登录时才会出现此错误,如下图所示: 在此输入图像描述

(一旦我点击OK,就会发生异常)

  1. 当我通过Xcode 7.x运行我的应用程序时,错误不会发生.所以它可能与facebook SDK与新编译器的集成有关.

希望有人能够回答这个问题,或者想知道如何调试这种无信息的bug.提前谢谢,丽然.

facebook exc-bad-access facebook-ios-sdk ios10 xcode8

12
推荐指数
2
解决办法
2316
查看次数