标签: exc-bad-access

调用pushViewController时EXC_BAD_ACCESS

我有一个UITableView里面的UITabBarController

当我打电话时

[[self navigationController] pushViewController:myViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)

没有问题。

但是,当我从 a 内部调用同一行时UIActionSheetDelegate,例如:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
Run Code Online (Sandbox Code Playgroud)

我明白了EXC_BAD_ACCESS

似乎从不同的线程调用此行会导致此问题。

我怎样才能防止这个EXC_BAD_ACCESS问题?

(请注意 myViewController 不为零,或类似的东西)

谢谢!

iphone exc-bad-access uitableview uiactionsheet

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

OpenCV 导致 EXC_BAD_ACCESS 线程 1:code=2 在 UIApplicationMain 中崩溃

帮助:

它在设备上崩溃。它在模拟器中崩溃。但在 Instruments 工具中它不会崩溃。我承认,我仍在学习如何使用 Instruments 工具,并且可能没有设置正确的设置来捕获错误。但我已经为此工作了好几天,这让我发疯。我的所有代码似乎都执行得很好。我正在使用 NSNotificationCenter 进行回调。当执行返回到视图并且数据在我的代码中设置时,数据就在那里。 当视图即将显示新数据时会出现问题。 相反,视图会消失并且应用程序会由于 EXC_BAD_ACCESS 错误而崩溃。我完全被难住了。

我对 NSZombie 如何与 Instruments 工具配合使用感到困惑。一些说明表明您不能将 NSZombiesEnabled 与 Instruments 工具一起使用。我也无法成功查看日志。也许我试图查看错误的日志,因为我查看的日志似乎不是人类可读的格式。

我几乎 99.9% 确信问题是在我们开始(在 C++ 中)将 CVMat 位图转换为灰度进行处理、在 C++ 中处理图像,然后在 C++ 中转换回颜色进行显示时开始的。但即使在它周围放置一个 try/catch 块也没有捕获错误。Objective-C 中的回调接收 UIImage。

异步调用、多种语言、包装器、OpenCV 库、大量故障点。我相信,出于多种原因,我必须成为 Instruments 工具的专家,但现在我迫切需要获得任何建议。

我现在正在学习 Ray Wenderlich 教程,但很感谢可能遇到类似问题的其他人提供的信息。

c++ opencv exc-bad-access objective-c

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

在 Objective-C 中的dispatch_async中传递参数时的EXC_BAD_ACCESS

我将一个变量传递给另一个方法。访问此属性时,应用程序崩溃并出现 EXC_BAD_ACCESS 错误。

   in class1: 
  CVPixelBufferRef pixelBuffer;
  @implementation class1
     - (void)captureOutput:(AVCaptureOutput *)output didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
        pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
        dispatch_async( dispatch_get_main_queue(), ^{
           predictions = [dTFG runX:pixelBuffer orientation: UIDeviceOrientationPortrait CardRect: _vwRect];

       }
     }
   } 

    in class2:
    - (NSArray*) runX:(CVPixelBufferRef) pixelBuffer orientation: (UIDeviceOrientation) orientation CardRect:(CGRect) CardRect {
       CFRetain(pixelBuffer);  // Error: Thread 1: EXC_BAD_ACCESS (code=1, address=0x800000060)
    }
Run Code Online (Sandbox Code Playgroud)

线程1:EXC_BAD_ACCESS(代码=1,地址=0x800000060)

当我评论dispatch_async时,崩溃没有发生。

根据另一个答案,这个错误(可能)是由于释放的对象造成的。但是为什么这种情况下释放了但是没有dispatch_async,就没有释放。

exc-bad-access objective-c ios

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

使用NSOutlineView时EXC_BAD_ACCESS

我正在尝试使用Outline视图来显示目录,现在我已经编辑了Apple的示例,使其可以在我设置的任何目录中工作,除非在扩展任何节点时我从NSOutlineView类获得"EXEC_BAD_ACCESS".

这是头文件:

#import <Cocoa/Cocoa.h>

@interface SMLDirectoryDataSource : NSObject {
    NSString *rootDirectory;
}

- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item;
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item;
- (id)outlineView:(NSOutlineView *)outlineView
            child:(int)index
           ofItem:(id)item;
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn
           byItem:(id)item;
- (void) setRootDirectory:(NSString *)directory;

@end

@interface SMLDirectoryDataItem : NSObject
{
    NSString *relativePath, *fullPath;
    SMLDirectoryDataItem *parent;
    NSMutableArray *children;
}

//+ (SMLDirectoryDataItem *)rootItem;
- (int)numberOfChildren;// Returns -1 for leaf nodes
- (SMLDirectoryDataItem *)childAtIndex:(int)n;// Invalid to call on leaf nodes
- (NSString *)fullPath;
- (NSString *)relativePath;

@end
Run Code Online (Sandbox Code Playgroud)

这是实现文件:

#import "SMLDirectoryDataSource.h"


@implementation SMLDirectoryDataSource …
Run Code Online (Sandbox Code Playgroud)

cocoa exc-bad-access objective-c nsoutlineview

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

为什么我不应该发布这个字符串?

请看以下方法:

-(void)updateProfile:(Profile *)profile WithJSON:(NSString *)JSON;
{
    SBJSON *parser = [[SBJSON alloc] init];
    NSDictionary *object = [parser objectWithString:JSON error:nil];

    NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
    [nf setPositiveFormat:@"#,##0"];

    profile.displayName = [object valueForKey:@"displayName"];
    profile.profileURL = [object valueForKey:@"profileURL"];

    NSString *rep = [object valueForKey:@"reputation"];
    profile.reputation = [[nf numberFromString:rep] intValue];
    //[rep release];   <-Why not release?

    [nf release];        
    //[object release];  <-Why not release?
    [parser release];
}
Run Code Online (Sandbox Code Playgroud)

我已经注释掉了两行,如果没有,它会给我EXC_BAD_ACCESS.
有人可以向我解释为什么发布这些对象是错误的吗?

release exc-bad-access objective-c

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

ASIHTTPRequest dealloc和EXC_BAD_ACCESS问题

我正在使用ASIHTTPRequest包装器(AsyncImageLoader)数组来下载UITableView中的单元格的图像.

我在处理ASIHTTPRequests生命周期时遇到问题.如果我发布它们,如果我在尝试加载图像时继续向上和向下滚动,我最终会有一个EXC_BAD_ACCESS.

这是我的包装器的样子.self.request有保留属性,targetCell是我要将图像放入的单元格:

@implementation AsyncImageLoader
- (void)loadImageFromURL:(NSString*)fileName target:(ResultTableViewCell*)targetCell {
    // check for cached images, etc

    NSURL* url = [NSURL URLWithString:fileName];
    [self.request cancel];
    self.request = [ASIHTTPRequest requestWithURL:url];
    self.request.delegate = self;
}

- (void)startLoading {
    [self.request startAsynchronous];
}

- (void)cancel {
    [self.request cancel];
    self.request = nil;
}

- (void)requestFinished:(ASIHTTPRequest*)requestDone {
    // cache image, set cell image...

    self.request = nil;
}

- (void)requestFailed:(ASIHTTPRequest*)requestDone {
    // handle answer as well

    self.request = nil;
}
@end
Run Code Online (Sandbox Code Playgroud)

loadImageFromURL被称为cellForRowAtIndexPathindexPath.row …

iphone exc-bad-access objective-c dealloc asihttprequest

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

使用块会导致EXC_BAD_ACCESS

我想使用块,但在几次调用后它会导致我EXC_BAD_ACCESS.

我的代码:

- (void) sendBasket {
    if (currentSendToBasketBlock != nil) {
    // there's already a webservice going... set the new one as waiting
    waitingSendToBasketBlock = ^ {
        WebServicesModel *webServicesModel = [[[WebServicesModel alloc] init] autorelease];
        webServicesModel.delegate = self;
        [webServicesModel sendBasketToServer:currentBasket];

        [self showBasketBackground];

    };
    [waitingSendToBasketBlock copy];
} else {
    currentSendToBasketBlock = ^ {
        WebServicesModel *webServicesModel = [[[WebServicesModel alloc] init] autorelease];
        webServicesModel.delegate = self;
        [webServicesModel sendBasketToServer:currentBasket];

        [self showBasketBackground];
    };

    [currentSendToBasketBlock copy];

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

Web服务完成后,它会在同一个对象上调用特定方法:

- (void) specificMethod {
    if (waitingSendToBasketBlock != nil) …
Run Code Online (Sandbox Code Playgroud)

exc-bad-access objective-c ios objective-c-blocks

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

来自IB的GestureRecognizers在模拟内存警告时崩溃应用程序

我有一个从故事板中拉出的手势识别器,它工作正常,花花公子...

当我模拟低内存警告时除外.那时,它崩溃了错误:

[UISwipeGestureRecognizer retain]: message sent to deallocated instance 0x8627330
Run Code Online (Sandbox Code Playgroud)

为了让它不崩溃,我要做的是将手势识别器设置为一个强大的属性,并在viewdidload中将自动生成的集合注释为nil:

//[self setSwipeGestureRecognizer:nil];
Run Code Online (Sandbox Code Playgroud)

我随机得到了这个解决方案,我希望有人可以解释这里发生了什么?

memory-leaks exc-bad-access objective-c uigesturerecognizer ios

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

在iOS 7上使用UIBarButtonItem外观的EXC_BAD_ACCESSWhenContainedIn

//Set all cancel buttons in search bars to "Done"
id searchBarButton = [UIBarButtonItem appearanceWhenContainedIn:[UISearchBar class], nil];
if([[[UIDevice currentDevice] systemVersion] floatValue] < 7) {
    [searchBarButton setTitle:@"Done"];
} else {
    //Can't do anything here or i get EXC_BAD_ACCESS
}
Run Code Online (Sandbox Code Playgroud)

viewDidLoad仅在iOS 7 Gold Master和更新版本上调用时,才会显示EXC_BAD_ACCESS .iOS 7 beta 6及更早版本很好.

在iOS 7中有不同的方法吗?

NSLog("%@", searchBarButton) 结果在iOS7上:

2013-10-01 16:14:25.972 MP Staging[12293:a0b] <_UIBarItemAppearance:0x1aaf72d0> <Customizable class: UIBarButtonItem> when contained in ( UISearchBar ) with invocations (null)>

这在iOS 6上

<_UIBarItemAppearance: 0x1c671aa0>

exc-bad-access uisearchbar ios ios7

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

EXC_BAD_ACCESS在发布但不是调试

我的产品在从xcode到模拟器和设备的调试中运行良好,但在归档和提交时没有运行.我将我的计划改为以释放方式运行,果然,它崩溃了.

下面的代码部分在该var homeNav行上生成EXC_BAD_ACCESS错误.此方法位于自定义TabBar控制器中.我还在下面包含了app委托调用,因为这是创建和显示tabcontroller的地方.

标签控制器调用:

//Sets up view on load
    override func viewDidLoad() {
        super.viewDidLoad()

        //Setup and add home view
        var homeNav = CMSSNavigationController(navigationBarClass:CMSSNavigationBar.self, toolbarClass:nil)
        homeNav.viewControllers.append(CMSSHomeController(nibName:XIBS.VIEW_HOME, bundle:nil))
        homeNav.tabBarItem.image = UIImage(named:Images.TAB_HOME)
        homeNav.edgesForExtendedLayout = UIRectEdge.None

        //Setup and add profile view
        var profileNav = CMSSNavigationController(navigationBarClass:CMSSNavigationBar.self, toolbarClass:nil)

        profileNav.viewControllers.append(CMSSProfileController(nibName:XIBS.VIEW_PROFILE, bundle:nil))
        profileNav.tabBarItem.image = UIImage(named:Images.TAB_PROFILE)
        profileNav.edgesForExtendedLayout = UIRectEdge.None

        //Set tabs
        self.viewControllers = NSArray(objects: homeNav, profileNav)

    }
Run Code Online (Sandbox Code Playgroud)

App代表致电:

 //Handles events after launch
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        //Setup Google Analytics
        GAI.sharedInstance().trackUncaughtExceptions = …
Run Code Online (Sandbox Code Playgroud)

release exc-bad-access uinavigationcontroller swift

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