以下のようにloadViewを定義していて、かつ
initメソッド内でself.viewにアクセスしている場合、
無限ループになる。
- (void)loadView { [super setView:self.tempView]; self.tempView = nil; } - (id)initWithView:(GMGridView *)view{ self = [super initWithView:view]; if (self){ [self registGesture]; self.tempView = view; } return self; } - (void)registGesture{ if (!isGestureRegisted){ UIPinchGestureRecognizer *recognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGestureUpdated:)]; [self.view addGestureRecognizer:recognizer]; isGestureRegisted = YES; } }
理由はloadViewメソッド内でviewにインスタンスを渡そうとしているが、viewに代入するtempViewは
self.tempView = view;
が実行された後でないとnilであるため。
そもそもinitの中でviewにアクセスしてはいけない。
viewの設定はviewDidLoad内でやるべき。
参考:http://stackoverflow.com/questions/4986098/viewdidload-infinite-loop-issue-ios