2013-02-21 146 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