标签: exc-bad-access

Swift中的parser.parse()导致EXC_BAD_ACCESS

我正在关注本教程,作为我正在Swift工作的RSS馈送器应用程序的快速入门.我知道自从本教程以来Swift中有一些变化,但它们似乎都没有解释为什么我遇到这个问题.

相关代码(据我所知)在我的TableViewController中如下:

 override func viewDidLoad() {
    super.viewDidLoad()

    let url:NSURL = NSURL(string: "my.url.string")
    parser = NSXMLParser(contentsOfURL: url)
    parser.delegate = self
    parser.parse() // <- Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)

}
Run Code Online (Sandbox Code Playgroud)

实际的解析器委托方法似乎没有问题,因为我在它们上放置了断点,甚至在崩溃之前都没有调用它们.

我的假设是它是一个Swift错误,但我想在我向苹果抱怨之前确保我没有遗漏一些东西.

exc-bad-access nsxmlparser ios swift xcode6

8
推荐指数
1
解决办法
2051
查看次数

iOS CoreLocation(null)崩溃

我通过Crashlytics在我的应用程序中收到此错误.我无法找到崩溃发生的地点和方式.以下是Crashlytics的日志:

Thread : Crashed: com.apple.main-thread
0  CoreLocation                   0x0000000183f62304 (null) + 60044
1  CoreLocation                   0x0000000183f230f0 (null) + 1436
2  CoreLocation                   0x0000000183f230f0 (null) + 1436
3  CoreLocation                   0x0000000183f2261c (null) + 1980
4  CoreFoundation                 0x0000000183754c9c __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 28
5  CoreFoundation                 0x0000000183754940 __CFRunLoopDoTimer + 884
6  CoreFoundation                 0x0000000183752054 __CFRunLoopRun + 1520
7  CoreFoundation                 0x0000000183680dc0 CFRunLoopRunSpecific + 384
Run Code Online (Sandbox Code Playgroud)

并且还说明了:崩溃:com.apple.main-thread EXC_BAD_ACCESS KERN_INVALID_ADDRESS at 0x6136383561626000

有人能指出我正确的方向吗?谢谢

exc-bad-access core-location ios

8
推荐指数
1
解决办法
570
查看次数

在iOS 4.0上使用SQLite(FMDB)和线程时的EXC_BAD_ACCESS

我正在使用FMDB处理我的数据库工作正常.该应用程序使用后台线程,它正在做一些工作,需要访问数据库.同时主线程需要在同一个数据库上运行一些查询.FMDB本身有一个小锁定系统,但是,我在我的类中添加了另一个.

只有当我的类指示数据库未使用时,才会执行每个查询.执行操作后,数据库将解锁.只要负载不是太高,这就可以正常工作.当我在主线程上运行的线程访问大量数据时,会发生EXC_BAD_ACCESS错误.

这是看起来:

- (BOOL)isDatabaseLocked {
    return isDatabaseLocked;
}

- (Pile *)lockDatabase {
    isDatabaseLocked = YES;
    return self;        
}

- (FMDatabase *)lockedDatabase {
    @synchronized(self) {
        while ([self isDatabaseLocked]) {
            usleep(20);
            //NSLog(@"Waiting until database gets unlocked...");
        }
        isDatabaseLocked = YES;
        return self.database;       
    }
}

- (Pile *)unlockDatabase {
    isDatabaseLocked = NO;
    return self;            
}
Run Code Online (Sandbox Code Playgroud)

调试器说错误发生[FMResultSet next]在该行

rc = sqlite3_step(statement.statement);
Run Code Online (Sandbox Code Playgroud)

我仔细检查了所有保留计数,此时所有对象都存在.同样,它只发生在主线程在后台线程运行时启动大量查询时(它本身总是产生很大的负载).错误总是由主线程产生,而不是由后台线程产生.

我的最后一个想法是两个线程同时运行lockedDatabase,这样他们就可以得到一个数据库对象.这就是我通过"@synchronized(self)"添加互斥锁定的原因.但是,这没有帮助.

有人有线索吗?

sqlite iphone exc-bad-access objective-c fmdb

7
推荐指数
2
解决办法
5744
查看次数

如何诊断KERN_PROTECTION_FAILURE

我得到了一个有趣的崩溃,我似乎无法在模拟器上复制:

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x00000008
Crashed Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x3212e86c 0x3212c000 + 10348
1   StockTwits                      0x00016b06 0x1000 + 88838
2   Foundation                      0x30718422 0x306db000 + 250914
3   Foundation                      0x307183a4 0x306db000 + 250788
4   CFNetwork                       0x30933e74 0x30923000 + 69236
5   CFNetwork                       0x30927b70 0x30923000 + 19312
6   CFNetwork                       0x30927e62 0x30923000 + 20066
7   CFNetwork                       0x30927a60 0x30923000 + 19040
8   CFNetwork                       0x30927a12 0x30923000 + 18962
9   CFNetwork                       0x30927990 0x30923000 + 18832
10  CFNetwork                       0x3092790e 0x30923000 …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa cocoa-touch exc-bad-access objective-c

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

当我无法确定原因时,如何在iPhone应用程序中调试EXC_BAD_ACCESS?

帮助,我已经在这几周乱砍了!我有这个应用程序我在模拟器中开发,我已经做了很多UI的东西,它只是与数据有趣的部分.它在启动时立即启动,大约90%的时间我运行它,它会引发EXC_BAD_ACCESS异常.

我已经注释掉了我的所有发布消息,甚至还添加了一些保留消息,以确保它不会过度发布.奇怪的是,有时我在代码中做的事情会使它工作,然后它会工作,直到我再次进行代码更改.然后我注释掉我添加的新代码,它仍然崩溃.

我已经在网上阅读了十几篇关于此的文章,尝试了他们建议的内容.我设置了断点,仍然无法弄清楚它在哪里.当我在调试器中单击调用堆栈时,显示源代码的唯一位置是主要的底层.

调试器有这个堆栈,但每次崩溃时都会有一点波动.不一致的性质告诉我有一些记忆它是自动释放的,但我不知道如何找出什么.

0 objc_msgSend
1 ??
2 _CFAutoReleasePoolPop
3 -[NSAutoReleasePool release]
4 _UIApplicationHandleEvent
5 PurpleEventCallback
6 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
7 __CFRunLoopDoSource1
8 __CFRunLoopRun
9 CFRunLoopRunSpecific
10 CFRunLoopRunInMode
11 -[UIApplication _run]
12 UIApplicationMain
13 main
Run Code Online (Sandbox Code Playgroud)

还有一些事实:

  • 我设置了NSZombieEnabled,这在控制台输出中没有任何区别
  • 我使用泄漏配置文件运行仪器,它没有显示任何泄漏

iphone debugging exc-bad-access

7
推荐指数
1
解决办法
8394
查看次数

objc_setAssociatedObject上的EXC_BAD_ACCESS与-weak_library /usr/lib/libSystem.B.dylib链接器标志

我有一个用链接器标志EXC_BAD_ACCESS调用的时候objc_setAssociatedObject:-weak_library /usr/lib/libSystem.B.dylib链接器标志.

我绝对需要链接器标志因为这个,有人知道一个解决方法吗?

(我也遇到了崩溃,dispatch_async但我可以解决这个问题...另外,我正在我的应用程序上构建iOS 4兼容的iOS 3兼容功能)

编辑:随着更多的研究,我发现了这个这个问题,但没有更多答案......

iphone exc-bad-access weak-references ios

7
推荐指数
1
解决办法
4240
查看次数

EXC_BAD_ACCESS仅在测试期间使用ARC

我有一个问题,我得到了错误的访问异常,但只有在运行测试版本时(在调试版本中调用相同的方法不会导致问题出现).该项目启用了ARC,我使用Xcode 4.3在iPad 5.1模拟器上运行它:

这就是问题出现的地方:

- (void)testChangeFoodNotification {
    Player* p = [[Player alloc] init];
    [p addObserver:self forKeyPath:@"food" options:0 context:0]; // <-EXC_BAD_ACCESS (code=2)
    p.food += 1;
    STAssertTrue(_wasNotifiedOfFoodChange, nil);
}
Run Code Online (Sandbox Code Playgroud)

addObserver:调用该方法时,似乎不应该释放任何涉及的对象,那么可能导致异常的原因是什么?

编辑:

如果不清楚但上面的代码是作为测试用例的一部分执行(使用标准的Xcode OCUnit),请道歉.此外,如果它澄清了这里的任何内容,那么来自播放器类的相关代码(还有其他的ivars和方法,但它们与被测试的属性或方法没有任何关联):

// Public interface
@interface Player : NSObject

@property (nonatomic, assign) NSInteger food;

@end

// Private interface
@interface Player() {
    NSInteger _food;
}

@end

@implementation Player

@synthesize food = _food;

#pragma mark - Getters/Setters

- (void)setFood:(NSInteger)food {
    [self willChangeValueForKey:@"food"];
    _food = food;
    [self didChangeValueForKey:@"food"];    
}
Run Code Online (Sandbox Code Playgroud)

exc-bad-access ocunit ios automatic-ref-counting

7
推荐指数
1
解决办法
2021
查看次数

IOS8 - [UIlabel sizeToFit]导致EXC_BAD_ACCESS KERN_INVALID_ADDRESS崩溃

我们的用户在下面的方法中遇到重复崩溃.坠机事件中的行的一个经常发生:[lbl sizeToFit](的lbl.变量重新初始化和重复使用,以我的理解,这应该不会造成任何问题).

这些崩溃只发生在iOS8上(同样的方法在ios7上使用了很长时间没有任何问题).我无法重建这个崩溃我自己.目前,我唯一的主要是来自'sizeToFit'苹果文档:

..在某些情况下,如果视图没有超视图,它可能会将自身调整为屏幕边界.因此,如果您希望给定视图将其自身调整为其父视图,则应在调用此方法之前将其添加到父视图.

但是,我不知道这会如何产生糟糕的内存参考.

-(void)setUpHeaders:(NSInteger)fortype{
    headers = [NSMutableArray array];
    if(fortype == GROUP_BY_TIME){

    for(int i=0;i<4;i++){
        UIView* header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 68)];
        header.backgroundColor = [UIColor whiteColor];
        [headers addObject:header];
    }

    int today = (int)[NSDate dayOfTheWeekOfDate:[NSDate date]];
    int firstDayOfTheWeek = (int)[defaults integerForKey:FIRST_DAY_IF_THE_WEEK_KEY];
    NSString* restOfTheWeek = nil;
    if(today == ((firstDayOfTheWeek + 4) % 7) + 1) restOfTheWeek = MyLocalizedString(@"THE COMING WEEK", @"THE COMING WEEK") ;
    else if(today == ((firstDayOfTheWeek + 5) % 7) + 1) restOfTheWeek = …
Run Code Online (Sandbox Code Playgroud)

exc-bad-access objective-c uilabel sizetofit ios8

7
推荐指数
1
解决办法
1704
查看次数

swift setter导致exc_bad_access

我下面有一个简单的课程

import Foundation

public class UsefulClass: NSObject{
    var test:NSNumber{
        get{return self.test}
        set{
            println(newValue)
            self.test = newValue
        }
    }
    override init() {
        super.init()
        self.test = 5;
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这里初始化它

import UIKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        var testClass = UsefulClass()
    }
}
Run Code Online (Sandbox Code Playgroud)

但是由于EXC_BAD_ACCESS代码= 2,它会导致xcode打印出200 5s然后崩溃.为什么会发生这种情况?

setter exc-bad-access swift

7
推荐指数
2
解决办法
7236
查看次数

为什么关闭 NSWindow 后重新打开它时会收到 EXC_BAD_ACCESS?

我在双击事件后调用以下代码,以便在鼠标位置打开一个小窗口。它工作正常,并且每次都会重新出现在新位置,但如果我先手动关闭窗口,则会收到 EXC_BAD_ACCESS 错误。

win =  [[NSWindow alloc] initWithContentRect:frame
                                 styleMask:(NSTitledWindowMask | NSClosableWindowMask)
                                 backing: NSBackingStoreBuffered
                                 defer:false];
        [win makeKeyAndOrderFront:NSApp];
Run Code Online (Sandbox Code Playgroud)

并且窗口在调用上面代码的视图的接口中声明

 @interface myView : NSView
{
    NSWindow *win;
}
Run Code Online (Sandbox Code Playgroud)

如果相关的话,我正在使用 ARC,并且在调试器中我可以看到win在关闭之后以及尝试重新创建它之前它不是 nil,尽管它的 contentView 已变为 nil。

感谢您提供任何线索。

macos xcode exc-bad-access objective-c nswindow

7
推荐指数
1
解决办法
658
查看次数