У меня есть некоторые тесты о подсчете ссылок Mannul в Objective-C. я бег этого код ниже:Множество проблем, связанных с NSString Количество ссылок
- (void) test {
NSData *a1 = [[NSData alloc] init];
NSLog(@"NSData: %lu", [a1 retainCount]);
NSMutableData *a2 = [[NSMutableData alloc] init];
NSLog(@"NSMutableData: %lu", [a2 retainCount]);
NSObject *a3 = [[NSObject alloc] init];
NSLog(@"NSObject: %lu", [a3 retainCount]);
NSString *b1 = [[NSString alloc] initWithFormat: @"%@", @"ok"];
NSLog(@"NSString: %lu", [b1 retainCount]);
NSString *b2 = [[NSString alloc] initWithFormat: @"%@", a3];
NSLog(@"NSStinrg: %lu", [b2 retainCount]);
NSString *a = @"abc";
NSString *b = @"abc";
NSLog(@"%p", a);
NSLog(@"%p", b);
}
Консоль:
2016-06-23 16:15:50.490 text[38147:3406036] NSData: 18446744073709551615
2016-06-23 16:15:50.491 text[38147:3406036] NSMutableData: 1
2016-06-23 16:15:50.491 text[38147:3406036] NSObject: 1
2016-06-23 16:15:50.491 text[38147:3406036] NSString: 18446744073709551615
2016-06-23 16:15:50.491 text[38147:3406036] NSStinrg: 1
2016-06-23 16:15:50.491 text[38147:3406036] 0x10359d160
2016-06-23 16:15:50.491 text[38147:3406036] 0x10359d160
И я хочу знать, почему число ссылок на NSData
и NSString
являются UINT_MAX
(-1), и initWithFormat
сделает b2
добавить рассчитывать? Почему адресаты a
и b
такие же?
Thx много.
[Когда использовать -retainCount?] (Http://sdarlington.github.io) – vikingosegundo
@vikingosegundo haha, вы дошли до меня. – Fogmeister