Thread 1: EXC_BAD_ACCESS (code=1, address=0xf00000

2019-04-05 01:46发布

I have problem with Thread 1: EXC_BAD_ACCESS (code=1, address=0xf00000c) and I don't know how to resolve it. It appeared when I change some object in core date and save it and I try to pop this controller to parent. This error is in main() with retVal. here is some code

        int retVal;
    @try {
        retVal =  UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
           */\ error is here**
    }
    @catch (NSException *exception) {
        NSLog(@"%@", [exception callStackSymbols]);
        @throw exception;
    }
    return retVal;

After re-runing app all my changes are in core data. What is more this problem is only on iOS 7. iOS 6.1 is ok.

Does someone have idea how to resolve it?

7条回答
时光不老,我们不散
2楼-- · 2019-04-05 02:08

As a comment said this error is likely to be deep in your code. If the culprit is a zombie, the easiest way to find it is to run it (preferably in the latest Xcode, currently Xcode 5, as it has been improved) in profiler and choose "Zombies". When it fails, you can see the history of everything that has happened to the object.

Also, set an exception breakpoint. You may get a break when the error happens instead of in main, where the exception gets passed up.

查看更多
成全新的幸福
3楼-- · 2019-04-05 02:08

I have resolve this issue only by debugging the source code and re-analyze my logic.

Below are some reference that help me lot.

EXC_BAD_ACCESS means that message was sent to a point in the memory where there’s no instance of a class to execute it. Thus “bad access”.

You will get EXC_BAD_ACCESS in 3 cases:

  • An object is not initialized
  • An object is already released
  • Something else that is not very likely to happen

That’s already a good starting point. Start using the debugger, if you recently added a new object to the class you’re working on, put a breakpoint at the line before the freshly added object is used for the first time and check the values in the debugger.

What’s happening most though is that you will be sending a message to an overreleased object – i.e. object that is gone from the call stack. In this cases everything (and indeed everything) you will get in the console will be just :EXC_BAD_ACCESS

This is because the object is gone, there is no information what class was it, or what source file or anything else.

More information can be found at here

Please try to avoid using zombies for this.

查看更多
你好瞎i
4楼-- · 2019-04-05 02:21

In my case, I was using third-party library and I forgot to set custom-class name in Storyboard Identity Inspector

查看更多
▲ chillily
5楼-- · 2019-04-05 02:22

I resolved this problem with "Zombies" and the problem was with [UIScrollView(UIScrollViewInternal) _notifyDidScroll]

I added

- (void)dealloc {

  self.tableView.delegate = nil;

} 

This problem was only in iOS 7.

Thanks for help!

查看更多
叼着烟拽天下
6楼-- · 2019-04-05 02:23

I solved the same problem by finding out that the name of one of my NSString variables had the same name as one of the frameworks' class variables. Took seconds to change the name a little and problem disappeared.

With such a huge number of class variables in frameworks, it is very likely that once in a while, every programmer just by coincidence names some variable in his class exactly the same as one used somewhere in framework classes. So it doesn't have to be Xcode bug in most cases.

查看更多
Rolldiameter
7楼-- · 2019-04-05 02:24

And there may be another issue which I faced today: I had a mutable dictionary with a non-object entry try. There was a code snippet with adding a BOOL value to the dictionary. So no wonder that I got this error =).

查看更多
登录 后发表回答