我在我的应用程序中使用了一个外部库(特别是https://github.com/jazzychad/CEPubnub)并且我遇到了内存管理问题。在“CEPubnub”对象初始化之后,必须订阅一个频道来接收更新。因此,我最终编写了以下代码:
self.pubnub = [[[CEPubnub alloc]
publishKey:@"..."
subscribeKey:@"..."
secretKey:@"..."
sslOn:NO
origin:@"pubsub.pubnub.com"] autorelease];
//Set the channel for this holler
[self setPubnubChannel:[[[NSMutableString alloc] initWithString:@"channelprefix_"] autorelease]];
[pubnubChannel appendString:[event eventId]];
NSLog(@"Subscribing to the pubnubChannel: %@", (NSString *)[[pubnubChannel copy] autorelease]);
每当我最终运行这个应用程序并加载调用它的视图时,退出视图,再次加载它,我最终导致内存泄漏,并且第二行代码被突出显示为问题的根源(通过我的泄漏仪器)。
当我运行分析时,它还突出显示了第二行代码,但显示“在 [line 1] 上分配的对象可能泄漏”,好像第一行是问题所在。在我的 viewDidUnload 方法和 dealloc 方法中,我确保释放了 pubnub 属性,但它似乎仍然泄漏,我傻眼了。关于我应该做什么的任何想法?