【发布时间】:2012-07-05 20:58:49
【问题描述】:
假设我有一个名为 MyTestClass.h 的类。
三个 NSString 变量以不同的方式初始化
类结构是这样的
@interface MyTestClass : NSObject {
NSString *testString1;
NSString *testString2;
NSString *testString3;
}
@property (nonatomic, retain) NSString *testString1;
@property (nonatomic, retain) NSString *testString2;
@property (nonatomic, retain) NSString *testString3;
@end
MyTestClass.m
@implementation MyTestClass
@synthesize testString1, testString2, testString3;
-(id) init{
self.testString1 = @"";
[self setTestString2:@""];
testString3 = @"";
}
现在我打算创建一个MyTestClass
的对象MyTestClass *obj = [[MyTestClass alloc] init];
我认为在此代码行执行后 testString1,testString2 和 testString3 retainCounts 将是 1 。
我说的对吗?
我可以知道如果我发布 testString3 会发生什么吗?
对此的任何帮助表示赞赏。
谢谢
【问题讨论】:
-
依赖retainCount不好。我们永远无法确定框架保留了多少次对象。您阅读了这篇 ->friday.com/bbum/2011/12/18/retaincount-is-useless bbum 的精彩文章。基本上,依赖它们进行内存管理是不好的。
-
我将上述问题作为重复链接,因为它还链接到与此确切主题相关的许多其他相关问题的树,以及在这种情况下您会看到的奇怪结果 (2147483647 )。似乎每个人都必须至少体验一次 NSString 的 retainCount 的怪异之处,然后才能意识到 retainCount 是多么无用(以及为什么 ARC 将其变成编译器错误是一件好事)。
标签: iphone objective-c memory-management properties retaincount