2012-04-03 77 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和那些)。

有點棘手。