Чтобы убедиться, что право собственности на объект, который был добавлен в NSArray
, отменено, отправьте объекту сообщение -release
сразу после добавления его в NSArray
. Если вы этого не сделаете, то у вас действительно будет утечка памяти.
Вот что происходит:
NSString *str = [[NSString alloc] initWithFormat:@"%@", @"Blah"]; //retain count is 1, you own this object
[array addObject:str]; //retain count gets bumped to 2
[str release]; //retain count is 1 - relinquishing ownership here.
//There is no leak because when the NSArray is
//deallocated, the object will be sent the release message.
Но если вы не отправите принадлежащий вставленный объект в сообщение -release
, то даже когда NSArray
освобожден, у объекта будет только счетчик хранения 1
память, полученная объектом, никогда не будет возвращена, что приведет к утечке.