子类看起来像这样:
@property (nonatomic,weak) IBOutlet UILabel *categoryLabel;@property (nonatomic,weak) IBOutletCollection(UIImageVIEw) NSArray *images;
属性较弱,原因如下:http://stackoverflow.com/a/7729141/1016515
然后我将标签和笔记本上的UIImageVIEws从视图连接到文件所有者。
然后,在这个子类的awakeFromNib部分,我做到了:
[[NSBundle mainBundle] loadNibnamed:@"categorybutton" owner:self options:nil];NSLog(@"label: %@",self.categoryLabel);NSLog(@"images: %@",self.images);
我期望看到类别标签和图像的地址。相反,我发现类别标签很好,图像为零。
这是令人困惑的,因为图像和categoryLabel的声明是相同的。为什么一个工作和另一个失败?
解决方法 我把它放在这里,因为我没有找到任何问题,但是如果你习惯于使用IBOutlets而不是IBOutletCollections,那么似乎是一个很容易的错误。由于这是我通常为IBOutlets做的,因为在另一个问题中讨论的原因,我使财产变弱。
我忽略的是,IBOutletCollection是类的实例变量,而不仅仅是对视图层次结构的任意引用。因此,如果它是一个弱属性,NSArray *将立即被释放,因为视图层次结构不像其他IBOutlet属性一样保留它。
修复很简单,使得属性很强:
@property (nonatomic,strong) IBOutletCollection(UIImageVIEw) NSArray *images;
更新:根据this answer,几乎所有的IBOutlet应该是强大的,除非他们必须是弱的,以避免保留周期。这是新的,大多数文件仍然表明网点应该很弱。
总结以上是内存溢出为你收集整理的ios – 从NIB加载视图,IBOutletCollection是零,即使其他IBOutlet的工作正常全部内容,希望文章能够帮你解决ios – 从NIB加载视图,IBOutletCollection是零,即使其他IBOutlet的工作正常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)