我在应用程序委托文件中使用 ActivityIndicatorC 类并为其分配对象,但在这里我得到内存泄漏,
self.ActIndicator=[[ActivityIndicatorC alloc] initwithWindow:window];
我在 dealloc 部分释放了 ActIndicator 这个对象,但直到我得到上述代码的相同潜在泄漏。
任何人都可以建议的任何解决方案。
我在应用程序委托文件中使用 ActivityIndicatorC 类并为其分配对象,但在这里我得到内存泄漏,
self.ActIndicator=[[ActivityIndicatorC alloc] initwithWindow:window];
我在 dealloc 部分释放了 ActIndicator 这个对象,但直到我得到上述代码的相同潜在泄漏。
任何人都可以建议的任何解决方案。
该对象被保留两次。使用时,self.ActIndicator =
您调用 setter,编译器使用@property(retain,...)
您放入界面中的方法为您创建。
self.ActIndicator=[[ActivityIndicatorC alloc] initwithWindow:window];
^ retainCount + 1 ^^^^^ and +1 because of this.
你可以写
self.ActIndicator = [[[ActivityIndicatorC alloc] initwithWindow:window] autorelease];
或者
ActIndicator = [[ActivityIndicatorC alloc] initwithWindow:window];
您应该将名称更改为 actIndicator 或(甚至更好)activityIndicator。只有类名应该以大写字母开头。
如果 ActIndicator 设置为保留属性。然后 .h 文件中存在泄漏 make @property(nonatominc ,retain) 到 @property(nonatominc ,assign) 或
ActivityIndicatorC *theActivity= [[ActivityIndicatorC alloc] initwithWindow:window];
self.ActIndicator=theActivity;
[theActivity release];
您必须手动释放使用 alloc-init 创建的对象。所以你应该写一个[ActIndicator release];或者只是自动释放它。