該問題很容易解釋,但我很難解決。我有一個永遠不會初始化的屬性。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)
您是否在故事板實例化之後驗證了您的CustomController不是零? – 2012-04-03 22:00:11
是的,我的CustomController不是零。我也忘了提到這一點。 – 2012-04-03 22:00:49
你能發佈確切的代碼嗎? – 2012-04-03 22:02:49