【发布时间】:2010-08-12 07:14:21
【问题描述】:
我有一个视图控制器。视图控制器有一个名为 streamController 的保留对象,它是一个 NSObject 子类,用于处理与我的服务器的所有数据 I/O。一切都很好,除了我试图弄清楚为什么有些东西在所说的流控制器上泄漏。我把一个 NSLog 放在那里,但我从来没有看到它触发过。我完全不知道为什么,因为我在我的视图控制器的 dealloc 方法中释放了控制器。
从视图控制器界面...
StreamController *streamController;
@property (nonatomic, retain) StreamController *streamController;
从视图控制器实现...
@synthesize streamController;
- (id)init {
[super init];
self.streamController = [[StreamController alloc] init];
}
- (void)dealloc {
NSLog(@"dealloc view controller");
[streamController release];
[super dealloc];
}
来自 StreamController 实现...
- (void)dealloc {
NSLog(@"dealloc stream controller");
[super dealloc];
}
最后一个 dealloc 永远不会被调用。为什么?
【问题讨论】:
-
streamController 设置在哪里?
-
你用过streamController 后会释放它吗? *没关系,您已经更新了代码
-
是的,当视图控制器被释放时。查看帖子中的第一个 dealloc
-
是 NSLog(@"dealloc 视图控制器");被叫?否则我认为您不会发布该视图控制器?
-
是的,我看到记录到控制台,但不是 streamController 的
标签: iphone objective-c