Я думаю, что вы можете столкнуться с проблемой с NSString, когда сообщения сохранения и выпуска могут быть отправлены на строковую константу, но они на самом деле не влияют и не изменяют объекты retainCount. Приведенный ниже код работает, измените его на использование NSString и удерживайте / освобождайте его действие.
Код:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSMutableString *myString = [[NSMutableString alloc] initWithString:@"AB"];
NSLog(@"RC: %d", [myString retainCount]);
[myString retain];
NSLog(@"RC: %d", [myString retainCount]);
[myString release];
NSLog(@"RC: %d", [myString retainCount]);
[myString release];
[pool drain];
return 0;
}
Выход:
Running…
TESTBED[12306:a0f] RC: 1
TESTBED[12306:a0f] RC: 2
TESTBED[12306:a0f] RC: 1
1009 * Гэри *