Я читал документацию из apple об управлении памятью, когда я добрался до блоков пула автозапуска, и что-то заставило меня задуматься.
Any object sent an autorelease message inside the autorelease pool block is
released at the end of the block.
Я не уверен, что полностью понимаю это. Любой объект, созданный внутри блока пула автозаполнения, все равно будет выпущен в конце блока, потому что это срок службы. Зачем вам нужно вызывать авторекламу для объекта, когда он будет выпущен, когда он достигнет конца блока?
Чтобы быть более ясным, я приведу пример, о чем я думаю:
@autoreleasepool {
MyObject *obj = [[MyObject alloc] init]; // no autorelease call here
/* use the object*/
//....
// in the end it should get deallocated because it lifespan ends, right?
// so why do we need to call autorelease then?!
}
PS: Пожалуйста, не говорите мне, что из-за ARC нам не нужно что-то делать, потому что ARC заботится о них. Я полностью это понимаю, но я хочу оставить ARC в течение нескольких секунд, чтобы понять механизм управления памятью.