我是objective-c的新手(以及苹果的所有东西,就此而言)。
我正在设计一个 iOS 应用程序并遇到了一个对我来说似乎很有趣的错误。基本上,我从一个 VC (LoginViewController) 开始,在此过程中我会将另一个 VC 推送到我的导航控制器 (MyProfileViewController) 上。
但是当我通过堆栈返回 LoginViewController 时,触摸屏幕上的任何对象都会导致EXEC_BAD_ACCESS
错误。经过一番摸索,我决定更改视图中的表名(我的两个 ViewController 都包含一个UITableView
,在它们各自的 .m 文件中定义,并且我将这两个都命名为“myTable”)。
事实证明,对于我的应用程序,除了导致可读性差(您不必在这一点上责备我)之外,将两个表命名为相同是导致崩溃的原因。所以我猜想当 MyProfileViewController 被释放时,它也从 LoginViewController 中释放了“myTable”???
对于正常的错误,我意识到我的错误,尝试从中吸取教训,然后继续前进。但这对我来说没有意义,为什么它首先会造成崩溃。有什么见解吗?作为参考,这是我在两个 ViewController 中定义和发布 UITableView 的方式。
@implementation MyProfileViewController//same format as LoginViewController
UITableView* myTable;//It's since been renamed to something more descriptive
//code...
-(void)viewDidLoad{
[super viewDidLoad];
myTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 460) style:UITableViewStyleGrouped];
[myUpdateTable setDataSource:self];
[myTable setDelegate:self];
[self.view addSubview:myTable];
}
//code...
-(void)dealloc{
[myTable release];
[super dealloc];
}