该问题很容易解释,但我很难解决。我有一个永远不会初始化的属性。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