Objective c 并非所有引用都已发布,1个仍然有效
我正在学习Objective-C中计算引用的保留和释放方法,但Instruments表示,这仍然是Objective c 并非所有引用都已发布,1个仍然有效,objective-c,memory-leaks,Objective C,Memory Leaks,我正在学习Objective-C中计算引用的保留和释放方法,但Instruments表示,这仍然是MyClass的一个引用,代码: #import <Foundation/Foundation.h> #import "MyClass" int main(int argc, const char * argv[]) { @autoreleasepool { MyClass *obj; for (int i=0; i < 200000; i++){
MyClass
的一个引用,代码:
#import <Foundation/Foundation.h>
#import "MyClass"
int main(int argc, const char * argv[])
{
@autoreleasepool {
MyClass *obj;
for (int i=0; i < 200000; i++){
obj = [[MyClass alloc] init];
[obj setSomeValue:100];
NSLog(@"itineration %i", i);
[obj release];
}
}//@autoreleapool
}//main
为什么仪器在MyClass中显示“16LiveBytes”“1#Living”“199999#Transient”“200000#total”?应该是0,对吗 你为什么不使用ARC?@CrimsonChris也许OP需要更多内存管理方面的经验。使用ARC似乎还活着。不正常对吗?如果我查找剩余引用的内存地址,则显示为空,没有地址。。。所以我认为这是某种乐器的错误。那么,让我们先回答CrimsonChris的一个非常重要的问题:为什么不使用ARC?如果只使用ARC,很难陷入内存问题,而且没有什么好的理由不使用ARC。除非你能想出一个不使用ARC的好理由,否则这里的正确答案是“使用ARC”
@interface MyClass : NSObject
@property int someValue;
@end