Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios4 在构造函数之前调用viewDidLoad_Ios4_Constructor_Memory Management_Viewdidload - Fatal编程技术网

Ios4 在构造函数之前调用viewDidLoad

Ios4 在构造函数之前调用viewDidLoad,ios4,constructor,memory-management,viewdidload,Ios4,Constructor,Memory Management,Viewdidload,这个问题涉及到。我有两个构造器: - (id)initWithBanner:(NSMutableArray *)banners { if ( self = [super initWithNibName:@"UIBanner" bundle:nil] ) { testString = [[NSString alloc] initWithString:@"Banner"]; NSLog(@"Foo"); } return self; } - (id)initWit

这个问题涉及到。我有两个构造器:

- (id)initWithBanner:(NSMutableArray *)banners {
  if ( self = [super initWithNibName:@"UIBanner" bundle:nil] ) {
     testString = [[NSString alloc] initWithString:@"Banner"];
     NSLog(@"Foo");
  }

  return self;
}

- (id)initWithPreview:(NSMutableArray *)previews {
  if ( self = [super initWithNibName:@"UIBanner" bundle:nil];
    testString = [[NSString alloc] initWithString:@"Preview"];
    NSLog(@"Foo");
  }

  return self;
}

- (void)viewDidLoad {
  NSLog(@"%@", testString);
}
在另一个对象中,我有两个名为*bannerPreview和*bannerVideo的此类实例,分别用initWithPreview和initWithVideo初始化。发生的情况如下: 在预览构造函数中,我无法访问IBOutlets,因为它们是nil,而它们不在横幅中。但是bannerVideo的viewDidLoad方法在构造函数完成之前被调用,而bannerPreview的viewDidLoad方法则没有。我在类中添加了一个字符串测试,在上面列出的两个方法中添加了一个NSLog(@“Foo”),我的输出是:

2011-03-15 12:29:13.929 iUDC[2600:207] Foo
2011-03-15 12:29:13.934 iUDC[2600:207] preview
2011-03-15 12:29:15.038 iUDC[2600:207] (null)
2011-03-15 12:29:15.038 iUDC[2600:207] Foo

我应该如何处理这种行为

init
中执行的操作应该独立于在
viewDidLoad
中执行的操作。任何依赖于
self.view
的操作都应该在
viewDidLoad
中完成


init
完成之前还是之后调用
viewDidLoad
,取决于加载视图所需的时间以及执行
init
所需的时间。您的
initWithPreview:
方法中存在错误。它大概应该说:

[super initWithNibName:@"UIPreview" bundle:nil]

所以如果我必须进行一些需要的初始化处理,我应该只在构造函数中启动。对吗?那么销售点呢?它们不是从[super initWithNibName:bundle:]初始化的吗?