【问题标题】:EXC_BAD_ACCESS on custom class initialization自定义类初始化时的 EXC_BAD_ACCESS
【发布时间】:2013-02-06 20:04:35
【问题描述】:

我写了以下课程:

.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

显示另一个视图时出现错误: - (void)viewDidAppear:(BOOL)动画 { [超级 viewDidAppear:动画];

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

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

} 

TDLTestSubViewController 是 TDLSubViewController 的子类。

如果我使用 UIViewController 而不是 TDLTestSubViewController 一切正常,如果我关闭 ARC 也可以。所以我认为问题出在 TDLSubViewController 类中。请提出什么问题?

【问题讨论】:

  • 你为什么不从 initWithNibName() 返回 self ?

标签: objective-c memory-management


【解决方案1】:

您的 initWithNibName:bundle: 方法不会在必须返回时返回 self

【讨论】:

  • 因此您的问题与 ARC 或您使用 Xcode4.6 甚至 iOS 的事实无关。这是一个简单的 Objective-C 问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 1970-01-01
相关资源
最近更新 更多