我对Objective C很陌生。
我有一个类 PassageViewController。这是.h文件:
#import <UIKit/UIKit.h>
@interface PassagesViewController : UIViewController {
UIButton *showPassagesButton;
UIButton *addButton;
UIView *passagesPanel;
}
@property (nonatomic, retain) NSMutableArray *titlesArray;
@property (nonatomic, retain) NSMutableArray *thePassages;
@end
在 .m 文件中,我有:
@implementation PassagesViewController
@synthesize thePassages;
- (id) init {
if (self = [super init]) {
self.title = @"Passages";
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
thePassages = [NSMutableArray arrayWithCapacity:0];
[self initTestPassages];
NSLog("%@", [thePassages description]);
...
(Code to lay out the buttons etc on screen, as I'm not using a xib file)
...
}
initTestPassages 方法只是用一堆不同的对象(使用方法addObject
)填充 thePassages。这个方法不打算在完成的应用程序中使用,我只是在玩 thePassages 以确保我完全理解它是如何工作的。(我不知道。) viewDidLoad 方法中的 NSLog 行告诉我,thePassages 包含我希望它包含的对象,至少在那时。
问题是,当我尝试从上述方法之外的任何地方访问 _thePassages 时,应用程序崩溃并显示 EXC_BAD_ACCESS 消息。例如,我创建了一个包含单行的方法int i = [thePassages count]
并调用该方法(例如,通过将其分配给屏幕上的一个 UIButtons 崩溃并给出错误。
我看过类似的问题,据我所知,问题与内存管理有关,但这确实不是我非常了解的主题,我不知道从哪里开始。我究竟做错了什么?