【发布时间】:2013-07-05 05:39:56
【问题描述】:
所以我正在编写一个继承自 UIView 的自定义类。我有一堆子视图,我添加了。
因此遇到 2 个问题。如果我使超级视图和子视图引用强,则视图正在泄漏。如果我让他们变得虚弱,他们根本就不会出现。我做错了什么?
自定义UIView
@interface CustomUIView : UIView
@property(nonatomic, strong) AnotherCustomUIView *mySubView;
@end
@implementation CustomUIView {
- (void)initCommon {
self.mySubView = [self createSubView]
}
- (AnotherCustomUIView *) createSubView {
return [[AnotherCustomUIView alloc] init:self];
}
@end
另一个CustomUIView
@interface AnotherCustomUIView : UIScrollView
@property (nonatomic, strong) CustomUIView *ownerView;
@end
@implementation AnotherCustomUIView
- (id)init:(CustomUIView *) ownerView {
self = [super init];
if (self) {
self.ownerView = ownerView;
self.delegate = self;
}
return self;
}
@end
【问题讨论】:
-
一个强一个弱,这样你就可以避免保留周期和过早的释放。看在上帝的份上,不要调用你的初始化器
init:! -
是的,我刚刚编写了一些代码来演示。 init 实际上是 initWithOwner。 AnotherCustomUIView 是一个虚拟滚动视图,它具有计算其内容应该有多大并响应滚动的逻辑,所以我将自己设置为滚动视图委托。我应该采取不同的做法吗?这会导致内存问题吗?代表应该很弱吧?
-
@userXXX 恰好其中一个 应该是弱的,实际上哪个不重要,但考虑一下(毕竟,这是你自己的代码),然后决定你将制作哪一个
strong。
标签: ios objective-c memory-management