Эти две строки эквивалентны. В обоих случаях создаются объекты, на которые у вас есть ссылка, но нет ссылки на владельца. Тем не менее, они будут в пуле автоматического выпуска. Это означает, что они будут работать столько же, сколько и пул, что, если вы не сделали ничего особенного, будет продолжаться до тех пор, пока управление не вернется в цикл выполнения. Таким образом, подобные объекты (как правило) выживают за пределами своей области видимости - это полезно, потому что это означает, что вы можете (и обычно делаете) предоставлять автоматически освобожденные объекты в качестве возвращаемых результатов.
Правило состоит в том, что методы, которые возвращают объект, но не содержат в своем имени слова «new», «alloc», «retain» или «create», возвращают объект с автоматическим освобождением. Это логика +array
возврата автоматически освобожденного объекта.
В качестве отступления: если вы включите ARC, то автоматически выпущенные объекты будут возвращаться, но компилятор может быть достаточно умен, чтобы вывести их из пула автоматического выпуска (что вы не можете сделать вручную) и выпустить их вручную в вызов метода, когда это не повлияет на ход программы.