2013-02-21 147 views
2

我寫了下面的類:EXC_BAD_ACCESS自定義類的初始化

.h

#import <Foundation/Foundation.h> 
@class TDLPaneViewController; 

@interface TDLSubViewController : NSObject 

@property (nonatomic, strong) IBOutlet UIView* view; 
@property (nonatomic, strong) TDLPaneViewController* paneViewController; 

- (id) initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil; 

- (void)viewWillAppear:(BOOL)animated; 
- (void)viewDidAppear:(BOOL)animated; 
- (void)viewWillDisppear:(BOOL)animated; 
- (void)viewDidDisppear:(BOOL)animated; 

@end 

.m

#import "TDLSubViewController.h" 

@interface TDLSubViewController() 
{ 
    UIView *view; 
} 

@property (nonatomic, strong) NSString* nibName; 
@property (nonatomic, strong) NSBundle* nibBundle; 

@end 

@implementation TDLSubViewController 

@synthesize paneViewController, view; 
@synthesize nibName, nibBundle; 

- (id)initWithNibName:(NSString*)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil 
{ 
    self = [super init]; 

    if (self) 
    { 
      self.nibName = nibNameOrNil; 
      self.nibBundle = nibBundleOrNil; 
    } 
} 

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSLog(@"viewWillAppear:%i", animated); 
} 
- (void)viewDidAppear:(BOOL)animated 
{ 
    NSLog(@"viewDidAppear:%i", animated); 
} 
- (void)viewWillDisppear:(BOOL)animated 
{ 
    NSLog(@"viewWillDisppear:%i", animated); 
} 
- (void)viewDidDisppear:(BOOL)animated 
{ 
    NSLog(@"viewDidDisppear:%i", animated); 
} 

@end 

出另一種觀點認爲,當我得到錯誤: - (空) viewDidAppear:(BOOL)animated { [super viewDidAppear:animated];

 TDLTestSubViewController* subView = [[TDLTestSubViewController alloc] initWithNibName:@"TDLTestSubViewController" bundle:nil] ; 

    [self pushSubViewController:nil animated:YES leftSide:YES]; 

} 

TDLTestSubViewController是TDLSubViewController的子類。

如果我使用UIViewController而不是TDLTestSubViewController,那麼一切正常,如果我關閉它也可以。所以我認爲問題出在TDLSubViewController類中。請提出什麼可能是錯誤的?

+0

你爲什麼不從initWithNibName()返回自我? – giorashc 2013-02-21 13:21:08

回答

5

您的initWithNibName:bundle:方法在必須時不返回self

+0

因此,您的問題與ARC或您使用Xcode4.6甚至iOS的事實無關。這是一個普通的Objective-C問題。 – Cyrille 2013-02-21 13:22:21

+0

+1好追趕:) – 2013-02-21 13:24:11

+0

新視圖總是有幫助,謝謝。 – 2013-02-21 14:28:17