内存管理
当数组中的对象释放之后, 会给数组中所有的对象发送一条release消息
当数组移除之后, 也会给数组里面的所哟对象发送一条release消息
CF的内存管理
CoreFoundation中, 凡是带有Create, Copy, Retain字眼的函数创建出来的对象, 都要在最后做一次Release. 比如CFRunLoopAddObserver, 后面就要CFRelease()
char *aaaa = "ssssssss";
NSLog(@"retainCount = %ld, %p", (long)_objc_rootRetainCount(aaaa), aaaa);
NSString *s = @"test";
NSLog(@"retainCount = %ld, %p", _objc_rootRetainCount(s), s);
// NSLog(@”retainCount= %ld”, [s retainCount]);
NSString *sNSString = [NSString stringWithFormat:@"%s", "test"];
NSLog(@"retainCount = %ld, %p", _objc_rootRetainCount(sNSString), sNSString);
// NSLog(@”retainCount= %ld”, [sNSString retainCount]);
NSString *s2 = [NSString stringWithString:[NSString stringWithFormat:@"testkkkk"]];
NSLog(@"retainCount = %ld, %p", _objc_rootRetainCount(s2), s2);
// NSLog(@”retainCount= %ld”, [s2 retainCount]);
CGFloat aaa = 2.2;
NSLog(@"retainCount = %ld, %p", _objc_rootRetainCount(aaa), aaa);
NSString *s1fff = [NSString stringWithString:@"test"];
NSLog(@"retainCount = %ld, %p", _objc_rootRetainCount(s1fff), s1fff);
PJAlertView[67652:1221733] retainCount = 1, 0x10b773d19
PJAlertView[67652:1221733] retainCount = 1, 0x10b774250
PJAlertView[67652:1221733] retainCount = -6917528996381567164, 0xa000000747365744
PJAlertView[67652:1221733] retainCount = 1, 0x600000058270
PJAlertView[67652:1221733] retainCount = 1, 0x7fff5448d898
PJAlertView[67652:1221733] retainCount = 1, 0x10b774250
为什么是这样, 没有搞明白! 求讨论, 求解答.
我猜测是内存管理不针对于文字常量区. retainCount不能作为文字常量区的引用计数.