标签: exc-bad-access

UIAlertView无法显示并导致"EXC_BAD_ACCESS"错误

按下键盘上的返回按钮时调用方法.在调用另一个返回整数的方法之后,将根据该整数创建一条消息.然后将消息传递到UIAlterView并显示给用户.警报没有任何选项(因此我没有给代表打电话),而只是通知用户发生了什么.

编辑:下面是完整的方法(以前显示的部分).当我在之前注释掉所有内容UIAlertView并替换字符串@"test"而不是传递消息时,警报会成功显示.我的结构没有正确处理内存吗?

- (IBAction)joinButton {
    struct userInfo localUser;

    [emailAddress resignFirstResponder];

    //convert textField text to char array in structure
    localUser.firstName = [self convertStringtoCharArray:firstName.text];
    localUser.lastName = [self convertStringtoCharArray:lastName.text];
    localUser.username = [self convertStringtoCharArray:username.text];
    localUser.email = [self convertStringtoCharArray:emailAddress.text];
    localUser.ipAddress = [self convertStringtoCharArray:localIPAddress.text];
    localUser.latitude = currentLocation.coordinate.latitude;
    localUser.longitude = currentLocation.coordinate.longitude;

    //pass structure to be sent over socket
    int result = [myNetworkConnection registerWithServer:&localUser];

    NSString *message = nil;

    //process result of sending attempt
    if (result == 0) {
        //registration succesful
        message = [NSString stringWithString:@"Registration successful"]; …
Run Code Online (Sandbox Code Playgroud)

iphone memory-management exc-bad-access uialertview

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

从NSZombieEnabled获取没有任何有用消息的EXC_BAD_ACCESS

我是iphone开发的新手,我一直在努力解决几天前发生的EXC_BAD_ACCESS错误.我基本上独立地使用斯坦福iphone类,我试图将一个NSManagedObjects数组传递给一个应该显示它们的TableViewController.应用程序在模拟器中启动并在tableView中显示数据,但它会立即出现EXC_BAD_ACCESS错误.

我按照这里和其他地方的说明如何使用NSZombieEnabled来识别过早释放的对象,但即使使用NSZombieEnabled也没有任何有用的消息.我的猜测是它必须是由于试图访问未通过发布/自动释放释放的未分配内存而导致的.否则它会被视为僵尸对象,就像我能够修复的其他错误一样.我不是专家,但如果我要声明一个对象并在没有实例化的情况下发送消息,那么这意味着会发生这样的事情吗?我查看了我的代码,看看我是否有类似的东西,我空了.

我在调试器中有堆栈跟踪,但我不知道如何使用它.我有点沮丧,因为我不能在代码中使用断点来进一步缩小问题,因为它似乎发生在应用程序加载完成后.如果没有可能的用户交互,我认为该应用程序将保持闲置状态.它是否在负载的尾端失败,我不能轻易看到它或者在完成加载后突然在后台做东西.我非常感谢有关如何阅读堆栈跟踪的任何提示.

我在下面键入了我的堆栈跟踪(无法弄清楚如何从调试器中复制它)

0 objc_msgSend
1 ??
2 -[NSManagedObject dealloc]
3 -[_PFManagedObjectReferenceQueue _processReferenceQue:]
4 _performRunLoopAction
5 ___CFRunLoopDoObservers
6 CFRunLoopRunSpecific
7 CFRunLoopRunInMode
8 GSEventRunModal
9 GSEventRun
10 UIApplicationMain
11 main

我的程序中的两个主要类是顶级委托类和它调用的ViewTableController.

` - (void)applicationDidFinishLaunching:(UIApplication*)application {

self.tabBarController = [[[UITabBarController alloc] init] autorelease];        

UINavigationController *contactsNavigationController = [[self createContactsNavigationController] retain];

//UINavigationController *recentsNavigationController = [[self createRecentsNavigationController:photos] retain];

tabBarController.viewControllers = [[NSArray alloc] initWithObjects: contactsNavigationController, nil];

[contactsNavigationController release];
//[recentsNavigationController release];

[window addSubview:tabBarController.view];
    [window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

}

- (UINavigationController*)createContactsNavigationController {

UINavigationController *contactsNavigationController = [[UINavigationController alloc] init];

UITabBarItem *contactsTabBarItem …
Run Code Online (Sandbox Code Playgroud)

iphone malloc exc-bad-access stack-trace

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

EXC_BAD_ACCESS错误,无可能的原因

好的,这是我的程序中的一个方法,它一直给出EXC_BAD_ACCESS错误并崩溃.我在下面说明了这一行.questionsShown是一个readwrite属性,指向一个NSMutableArray,我在程序的早期点初始化容量为99.当我调试时,就所分配的属性而言,所有内容都显得正常.我认为内存管理一定存在问题,但我在查找问题时遇到了严重问题.在此先感谢您的帮助.

@synthesize questionList;
@synthesize questionLabel;
@synthesize questionsShown;

-(IBAction)next{
int numElements = [questionList count];
int r;
if (myCount == numElements){
    [questionLabel setText:@"You have seen all the questions, click next again to continue anyways."];
    [questionsShown release];
    questionsShown = [[NSMutableArray alloc] initWithCapacity:99];
    myCount = 0;
}
else {
    do {
        r = rand() % numElements;
    } while ([questionsShown indexOfObjectIdenticalTo:r] != NSNotFound);
    NSString *myString = [questionList objectAtIndex:(NSUInteger)r];
    [questionLabel setText:myString];
    myCount++;
    [questionsShown addObject:r]; //results in crash with message EXC_BAD_ACCESS
    myCount++;
}
}
Run Code Online (Sandbox Code Playgroud)

iphone memory-management exc-bad-access objective-c

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

将合成(保留)属性设置为nil时的EXC_BAD_ACCESS

调用这行代码时,我得到一个错误的访问(objc_msgsend):

self.currentGameTeam = nil;
Run Code Online (Sandbox Code Playgroud)

其中"currentGameTeam"在接口中为名为"MCState"的类定义为:

MNAvailableTeamContext *currentGameTeam;
Run Code Online (Sandbox Code Playgroud)

我为它合成了一个属性:

@property (retain) MNAvailableTeamContext *currentGameTeam;
Run Code Online (Sandbox Code Playgroud)

设置NSZombieEnabled后,控制台显示:

*** -[MNAvailableTeamContext release]: message sent to deallocated instance 0x5b3eba0
Run Code Online (Sandbox Code Playgroud)

调试器跟踪显示它来自合成的setter代码:

#3  0x0001fa96 in -[MCState setCurrentGameTeam:] at MCState.m:44
Run Code Online (Sandbox Code Playgroud)

我已经看了几个其他问题和线程,我找不到适用于我的案例的答案.我不明白为什么如果我合成了属性并且我将它设置为nil会有一个糟糕的访问.特别奇怪的是MCState中至少有3个其他属性的定义和使用方式与currentGameTeam完全相同,唯一的区别是它们是不同的类型:

MNUserContext *storedUser;
MNActiveGameContext *storedGame;
MNAvailableUserContext *storedGameUser;
MNAvailableTeamContext *storedGameTeam;
Run Code Online (Sandbox Code Playgroud)

@property (retain) MNUserContext *currentUser;
@property (retain) MNActiveGameContext *currentGame;
@property (retain) MNAvailableUserContext *currentGameUser;
@property (retain) MNAvailableTeamContext *currentGameTeam;
Run Code Online (Sandbox Code Playgroud)

@synthesize currentUser;
@synthesize currentGame;
@synthesize currentGameUser;
@synthesize currentGameTeam;
Run Code Online (Sandbox Code Playgroud)

最后

self.currentUser = userContext;
self.currentGame = nil;
self.currentGameUser = nil;
self.currentGameTeam = nil; // Error …
Run Code Online (Sandbox Code Playgroud)

iphone null properties exc-bad-access objective-c

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

程序收到信号:"EXC_BAD_ACCESS"?

我正在使用XCode在C中创建命令行程序.在运行程序时,它最初会执行它应该执行的操作(询问我的文件路径).但是,当我键入有效的和现有的文件路径时,它会给我以下错误:

Program received signal:  “EXC_BAD_ACCESS”. sharedlibrary apply-load-rules all (gdb)
Run Code Online (Sandbox Code Playgroud)

我的程序中有两个警告,这两个警告都与strcat函数有关.警告是:

warning: implicit declaration of function 'strcat'
Run Code Online (Sandbox Code Playgroud)

warning: incompatible implicit declaration of built-in function 'strcat'
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我的程序没有正常执行.

谢谢,迈克

我的代码发布在下面:

#include "stdlib.h"
int main (void)
{
   char *string1;
   printf("Type in your file path: ");
   scanf("%s", string1);
   char *string2 = "tar czvf YourNewFile.tar.gz ";
   strcat(string2, string1);
   system(string2);
}
Run Code Online (Sandbox Code Playgroud)

也许它与分配字符有关?

c xcode command-line exc-bad-access

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

glGetAttribLocation/glGetUniformLocation返回0,导致glDrawArrays调用(iOS)上的EXC_BAD_ACCESS

我正在为iOS创建一个简单的OpenGL ES 2.0应用程序,每当我调用glDrawArrays时.我发现这是在我之前为我的两个属性(位置和颜色)调用glEnableVertexAttribArray时发生的,然后发现glGetAttribLocation返回1表示位置,0表示颜色,然后还发现glGetUniformLocation为我的MVP返回0矩阵.我不知道,如果0是有效的值,或者为什么glEnableVertexAttribArray似乎是造成EXC_BAD_ACCESS时调用glDrawArrays被调用.

这是我的代码:

compileShaders函数:

-(void)compileShaders {
GLuint vertShader = [self compileShader:@"Shader" ofType:GL_VERTEX_SHADER];
GLuint fragShader = [self compileShader:@"Shader" ofType:GL_FRAGMENT_SHADER];

GLuint program = glCreateProgram();
glAttachShader(program, vertShader);
glAttachShader(program, fragShader);
glLinkProgram(program);

GLint success;
glGetProgramiv(program, GL_LINK_STATUS, &success);
if (success == GL_FALSE) {
    GLchar messages[256];
    glGetProgramInfoLog(program, sizeof(messages), 0, &messages[0]);
    NSLog(@"%@", [NSString stringWithUTF8String:messages]);
    exit(1);
}

glUseProgram(program);

_positionSlot = glGetAttribLocation(program, "position");
_colorSlot = glGetAttribLocation(program, "color"); //Returns 0
_mvpSlot = glGetUniformLocation(program, "MVP"); //Returns 0

if (!_positionSlot || !_colorSlot || !_mvpSlot) {
    NSLog(@"Failed to retrieve the locations of the …
Run Code Online (Sandbox Code Playgroud)

exc-bad-access opengl-es ios

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

应用程序崩溃,没有任何日志消息

在我的应用程序中,我有一个UIViewController,由另一个ViewController的导航控制器推送.它包含一些视图,按钮,scrollView和加速度计支持.当我敲击navigationController的"返回"按钮,应用程序崩溃,没有任何日志消息,除了这一个:"警告:无法读取符号/Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.3(8J2)/符号/开发者/usr/lib/libXcodeDebuggerSupport.dylib(找不到文件).(gdb)"调试器将我链接到main.m中的这一行:

int retVal = UIApplicationMain(argc, argv, nil, nil);
Run Code Online (Sandbox Code Playgroud)

用"EXEC_BAD_ACCESS"这是什么意思?

编辑: 大家都是对的.问题出在加速度计上.我设置了委托([UIAccelerometer sharedAccelerometer] .delegate = self;)并没有删除它.这就是我的代码中没有用于链接的调试器的行的原因.我刚添加了这个:

 - (void)viewWillDisappear:(BOOL)animated {
        [UIAccelerometer sharedAccelerometer].delegate = nil;
    }
Run Code Online (Sandbox Code Playgroud)

问题消失了.因此,如果您正在使用任何设备功能,请小心代表.

iphone crash exc-bad-access objective-c navigationcontroller

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

iOS - EXC_BAD_ACCESS错误

我正在开发iPhone/iPod应用程序.以下代码是UIViewController的.m文件.我得到以下内容:

Thread 1: EXC_BAD_ACCESS (code=2......
Run Code Online (Sandbox Code Playgroud)

当我点击以下行时:

cell.textLabel.text = [datasource objectAtIndex:indexPath.row];
Run Code Online (Sandbox Code Playgroud)

我知道这通常发生在您发布对象后尝试访问对象时,但在尝试访问它之前我不会释放它.我已附上以下完整代码.

任何帮助都很感激!

#import "HomePage.h"
#import "HusbandryRecordsMain.h"
#import "TaskManagerMain.h"
#import "AnimalInventoryMain.h"
#import "FeedInventoryMain.h"

@implementation HomePage
@synthesize options, datasource;

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad {
    [self setupArray];
    [super viewDidLoad];

    // Do any additional setup after loading the view, typically from a nib.
}

-(void)setupArray{
    options = [NSMutableArray  arrayWithObjects:@"Husbandry Records", @"Task Manager", @"Feeder Inventory", …
Run Code Online (Sandbox Code Playgroud)

error-handling exc-bad-access objective-c ios

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

Swift中的UIAppearance和圆角边框

因此,对于整个UIAppearance方法进行处理并迅速进行处理,我还是一个新手。欢呼声中没有大量的文档资料。

我正在尝试通过UIAppearance设置边框半径,其中包括:

CircleButton.appearance.roundBorderRadius = 9
Run Code Online (Sandbox Code Playgroud)

我的CircleButton类实现:

public class CircleButton : UIButton{
     @nonobjc var roundBorderRadius: CGFloat? {
        get { return self.layer.cornerRadius }
        set {
            self.layer.cornerRadius = newValue!
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,我将情节提要中的所有内容都连接到包含CircleButton的ViewController。没有编译或生成错误。

但是,在运行时我得到了:

在以下位置出现“线程1:EXC_BAD_ACCESS”错误:

CircleButton.appearance.roundBorderRadius = 9
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

exc-bad-access ios uiappearance swift

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

NotificationCenter时,NotificationCenter:BAD_ACCESS

我有一个带有3个视图控制器的应用程序,这些应用程序被推到导航控制器堆栈上。

(A) -> (B) -> (C)

(A)viewWillAppear以下位置注册通知:

NotificationCenter.default.addObserver(self, selector: #selector(reload), name: NSNotification.Name(rawValue: "DATA_CHANGED"), object: nil)
Run Code Online (Sandbox Code Playgroud)

(A)在viewWillDisappear以下位置注销:

NotificationCenter.default.removeObserver(self, name: NSNotification.Name(rawValue: "DATA_CHANGED"), object: nil)
Run Code Online (Sandbox Code Playgroud)

另外(A)注销,deinit()但是从不调用。

现在(B)被压入堆栈,并为相同的事件注册/注销(A)

现在(C)被压入堆栈,触发计算并弹回(B)。稍后(B)出现时,计算完成,并触发通知:

NotificationCenter.default.post(name: NSNotification.Name(rawValue: "DATA_CHANGED"), object: nil)
Run Code Online (Sandbox Code Playgroud)

但这导致

线程1:EXC_BAD_ACCESS

我确定通知是问题所在,因为我拼错了通知名称,然后没有发生崩溃。并且(A)(B)仍然没有被释放,因为它们位于堆栈中。我在Profiler中找不到任何僵尸。

知道可能是什么问题吗?

我正在使用XCode 9beta6和Swift 4。

exc-bad-access nsnotificationcenter ios swift

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