Objective c 添加委托协议后,主应用程序崩溃;无错误代码

Objective c 添加委托协议后,主应用程序崩溃;无错误代码,objective-c,xcode,ipad,Objective C,Xcode,Ipad,在我的应用程序中,可以将一个视图中的图形拖动到第二个视图,这样新的图形就可以像复制/粘贴效果一样用拖放功能替换第二个视图。如果删除委托协议,则应用程序可以工作,以便第二个视图处理函数本身的更改。添加协议后,应用程序在主文件中崩溃 return UIApplicationMain(argc, argv, nil, NSStringFromClass([Load_CreatorAppDelegate class]));. 除了标准lldb之外,没有任何错误输出。即使我给保留代码的代理打电话,应用程

在我的应用程序中,可以将一个视图中的图形拖动到第二个视图,这样新的图形就可以像复制/粘贴效果一样用拖放功能替换第二个视图。如果删除委托协议,则应用程序可以工作,以便第二个视图处理函数本身的更改。添加协议后,应用程序在主文件中崩溃

return UIApplicationMain(argc, argv, nil, NSStringFromClass([Load_CreatorAppDelegate class]));.
除了标准lldb之外,没有任何错误输出。即使我给保留代码的代理打电话,应用程序也会崩溃。我知道它必须与协议代码相关,因为在那之前它工作得很好

下面是第二个视图BeamView的部分代码:

[self drawSupportsAtLeftPoint:self.beamBottomLeft rightPoint:self.beamBottomRight inContext:context :leftPin :rightPin];   

BOOL pt = NO;
if (self.tempLoad) {
    //self.loadGraph = [self.dataSource changeToTempLoad:self]; NOTE #1
    //if (self.tempPtLoad.x != 0 || self.tempPtLoad.y != 0) pt = YES;
    pt = [self changeLoad];
    [self drawLoadWithFunction:self.loadGraph inContext:context fromPoint:self.beamTopLeft toPoint:self.beamTopRight withAlpha:0.3 isPointLoad:pt inBlack:YES];
}
else {
    self.loadGraph = ^(int x) {return x/15;};
    [self drawLoadWithFunction:self.loadGraph inContext:context fromPoint:self.beamTopLeft toPoint:self.beamTopRight withAlpha:1 isPointLoad:pt inBlack:NO];
}

self.tempLoad = NO;
注1:注释掉的这些行是调用委托的行。这两种方法及其实现是我所做的唯一更改


我完全糊涂了,任何帮助都将不胜感激。应用程序将在主文件中崩溃的可能原因是什么?

好!我觉得自己有点傻,但事实证明这次撞车与授权没有任何关系。我删除了ViewController.m文件中的插座,但没有在IB中断开它们,这导致了崩溃


我忘了我做过那件事,所以我花了一段时间才想起来。直到我回到一个旧的保存版本,我才看到了差异。

好的!我觉得自己有点傻,但事实证明这次撞车与授权没有任何关系。我删除了ViewController.m文件中的插座,但没有在IB中断开它们,这导致了崩溃


我忘了我已经这么做了,所以我花了一段时间来思考,直到我返回到一个较旧的保存版本,我才看到差异。

崩溃将该行标记为错误,因为4.x系列发行版中引入了Xcode中的错误功能。基本上,默认情况下,未捕获的异常在到达应用程序的顶层之前不会报告,然后不会报告异常堆栈跟踪。有时,转到断点检查器并在未捕获的Objective-C异常上添加中断会有所帮助;通常,它有助于从@try/@catch中指定的“main”中换行,然后记录异常的描述和callStackSymbols。谢谢,@PhillipMills-我执行了以下@try{@autoreleasepool{return UIApplicationMainargc,argv,nil,NSStringFromClass[Load_CreatorAppDelegate class];}@catch NSException*异常{NSLog@Exception:%@,异常;[NSThread callStackSymbols];}这就是你的意思吗?程序仍然在主线上崩溃,并且没有输出任何东西关闭。我会选择@try{@autoreleasepool{return UIApplicationMainargc,argv,nil,NSStringFromClass[Load_CreatorAppDelegate class];}}}@catch NSException*exception{NSLog@Exception:%@,堆栈:%@,[异常描述],[异常调用堆栈符号];}但是,如果它没有触发你的,我看没有理由我的工作。另一个选项是将@try/@catch移动到您认为实际错误正在生成的位置。=/好的,非常感谢您的帮助!我会继续说下去。崩溃将这一行标记为错误,因为Xcode中的一个错误特性是在4.x系列发行版中引入的。基本上,默认情况下,未捕获的异常在到达应用程序的顶层之前不会报告,然后不会报告异常堆栈跟踪。有时,转到断点检查器并在未捕获的Objective-C异常上添加中断会有所帮助;通常,它有助于从@try/@catch中指定的“main”中换行,然后记录异常的描述和callStackSymbols。谢谢,@PhillipMills-我执行了以下@try{@autoreleasepool{return UIApplicationMainargc,argv,nil,NSStringFromClass[Load_CreatorAppDelegate class];}@catch NSException*异常{NSLog@Exception:%@,异常;[NSThread callStackSymbols];}这就是你的意思吗?程序仍然在主线上崩溃,并且没有输出任何东西关闭。我会选择@try{@autoreleasepool{return UIApplicationMainargc,argv,nil,NSStringFromClass[Load_CreatorAppDelegate class];}}}@catch NSException*exception{NSLog@Exception:%@,堆栈:%@,[异常描述],[异常调用堆栈符号];}但是,如果它没有触发你的,我看没有理由我的工作。另一个选项是将@try/@catch移动到您认为实际错误正在生成的位置。=/好的,非常感谢您的帮助!我会坚持下去的。