我有一个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 不为零,或类似的东西)
谢谢!
帮助:
它在设备上崩溃。它在模拟器中崩溃。但在 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 教程,但很感谢可能遇到类似问题的其他人提供的信息。
我将一个变量传递给另一个方法。访问此属性时,应用程序崩溃并出现 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,就没有释放。
我正在尝试使用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) 请看以下方法:
-(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.
有人可以向我解释为什么发布这些对象是错误的吗?
我正在使用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被称为cellForRowAtIndexPath对indexPath.row …
我想使用块,但在几次调用后它会导致我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) 我有一个从故事板中拉出的手势识别器,它工作正常,花花公子...
当我模拟低内存警告时除外.那时,它崩溃了错误:
[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
//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>
我的产品在从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) exc-bad-access ×10
objective-c ×7
ios ×4
iphone ×2
release ×2
c++ ×1
cocoa ×1
dealloc ×1
ios7 ×1
memory-leaks ×1
opencv ×1
swift ×1
uisearchbar ×1
uitableview ×1