私はobjective-c(そしてAppleのすべてのもの)の初心者です。
私は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];
}