2012-04-03 61 views
0

该问题很容易解释,但我很难解决。我有一个永远不会初始化的属性。iOS瓦特/故事板和ARC:控制器属性未初始化

首先,我使用iCarousel自定义类来显示我的应用程序的一些图像。在其委托的方法(它才能知道哪种说法是要在一些指标显示使用一个)之一,我用这个代码:

- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view 
{ 
    if(!view) 
    { 
     CustomController* controller = [self.storyboard instantiateViewControllerWithIdentifier: "identifier"]; 
     //BTW, the CustomController is initialized properly. Its instance is not nil after the initialization. 
     controller.imageView.image = [UIImage imageNamed: "something.png"]; 
     view = controller.view; 
    } 

    return view;  
} 

正如你所看到的,认为我表现出我的旋转木马是一个自定义视图与自己的控制器。我使用故事板方法初始化它,然后在imageView属性中设置图像,显然,这是一个UIImageView。

别激动,说我没有初始化我的imageView,因为我在我的“CustomController”类中有一个自定义getter。就像这样:

//接口(.h)中

... 

@property (nonatomic, strong) UIImageView* imageView; 

... 

//执行(.M)

... 

@synthesize imageView = _imageView; 

... 

- (UIImageView*) imageView 
{ 
    if(!_imageView) 
     _imageView = [[UIImageView alloc] init]; 
    return _imageView; 
} 

... 

信不信由你,即使我把一个断点在“_imageView = [[UIImageVIew alloc] init];“...程序执行该行,但_imageView保持零。为什么?

我不想知道“如何设置我的财产”,所以请不要为此提供解决方法......我想知道的是“为什么我的财产从未设置,并且始终保持零”,我做错了什么?

我也尝试使用我的imageView作为IBOutlet ...但即使我将它链接到界面构建器中的imageView并在“viewDidLoad”后检查其值,它仍然为零。

P.S:顺便说一句,我使用ARC(是的,我知道的是在标题... XD)

+0

您是否在故事板实例化之后验证了您的CustomController不是零? – 2012-04-03 22:00:11

+0

是的,我的CustomController不是零。我也忘了提到这一点。 – 2012-04-03 22:00:49

+0

你能发布确切的代码吗? – 2012-04-03 22:02:49

回答

0

嗯,它看起来像答案是说了什么borrrden,问题是LLDB调试器。其实,我的属性已经初始化,但调试器没有检测到它,如果我将它更改为GDB,我可以看到它不是零。此外,之所以我也有问题,我的孩子viewcontroller的网点是因为我没有在iOS5中使用View Controller容器方法(DidMoveParentViewController和那些)。

有点棘手。

相关问题