我真的不知道我在做什么是正确的做法。现在它似乎正在工作,直到它用EXC_BAD_ACCESS消息到达某一点。
我将描述我正在做的最好的事情以及我能说的最相关的细节: 我有一个CalendarViewController,它继承了从.xib文件(CalendarViewController.xib)加载的UIViewController。该类包含一个名为contentView的UIView,它是我创建的,我使用另一个基于同样继承自UIViewController的类的nib文件进行初始化:
- (void)viewDidLoad {
[super viewDidLoad];
calendarView = [[CalendarView alloc] initWithNibName:@"CalendarView" bundle:nil];
[contentView addSubview:calendarView.view];
}
(calendarView是继承UIViewController的类,viewDidLoad来自CalendarViewController。
CalendarView.xib有一个UITableViewController,它有各自的UITableView。这个表视图控制器链接到CalendarTableController,我也为它生成了一个.xib文件。
所有东西都是正确的(显然)创造出来但却在某个意外的地方崩溃。 CalendarTableController还实现了一个DateLoaderDelegate,它从外部URL上的xml加载信息。
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
// When the data has all finished loading, we set a copy of the
// loaded data for us to access. This will allow us to not worry about
// whether a load is already in progress when accessing the data.
self.lastLoadedMatchXMLData = [self.matchXMLData copy];
// Make sure the _delegate object actually has the xmlDidFinishLoading
// method, and if it does, call it to notify the delegate that the
// data has finished loading.
if ([_delegate respondsToSelector:@selector(xmlDidFinishLoading)])
{
[_delegate xmlDidFinishLoading];
}
}
应用程序正在顺利到达这一点。 _delegate包含正确的对象(实现DateLoaderDelegate的CalendarTableController)。但当它到达生产线时:
if ([_delegate respondsToSelector:@selector(xmlDidFinishLoading)])
它与EXC_BAD_ACCESS崩溃,我真的不知道原因,如果我看一下调试器,我的任何类中都没有发生崩溃,因为它们中的任何一个都出现在执行堆栈中。 URLConnectionClient似乎正在生成它,但我真的不知道为什么。在重新安排ViewControllers工作之前,xml的加载已经开始工作了,正如我现在所描述的那样。
有什么想法吗?
答案 0 :(得分:1)
这很奇怪。我修复了问题,但我不得不将整个UIViewController用于包含UITableView。我做的是这个:
这样我解决了UITableViewController被无故释放的问题。但是现在我放在中间UIViewController中的图像视图不会出现。我必须将UIViewController设置为仅包含CalendarTableView并将图像视图放在初始的UIViewController中。很奇怪,不是吗?我不太喜欢我创建的层次结构......但是现在这样做会是S
答案 1 :(得分:0)
检查您是否已为所有子视图定义了属性,并确保保留所需的所有内容。访问不良可能意味着您试图在已发布的对象上调用respondsToSelector
。
答案 2 :(得分:0)
在将嵌套控制器的视图添加到父视图之前,您是否尝试过调用 loadView ?
在添加视图之前,可能 viewDidLoad 未执行,并且某些变量从未初始化。