Вообще говоря, если вы получаете объект с помощью метода, начинающего alloc, new или copy, вы несете ответственность за освобождение этого объекта. Следовательно, в вашем первом запросе вам нужно освободить urlRequest и urlConnection. Объект url является примером объекта, который вам не нужно освобождать, поскольку он создается с использованием статического фабричного метода (URLWithString).
[[NSString alloc] init];
Инициализирует строку NSSt с числом повторов 1. 1. 1004 *
[[NSString alloc] initWithFormat:...];
Опять же, получается строка NSSt с счетом сохранения 1. Единственная разница в том, что вы назвали другой инициализатор.
[NSString stringWithString:...];
Создает автоматически освобожденную строку NSString, которая гарантированно остается действительной во время текущего цикла события.
Что касается атрибутов свойств, метод assign не будет сохранять объект, переданный в установщик.
Я знаю, что это немного сухо, но Рекомендации по управлению памятью - действительно хороший справочник для такого типа вопросов.