Значениями по умолчанию являются readwrite, assign и atomic. Так что, не указав в первом примере атрибут «назначить, сохранить или скопировать», вы, по сути, используете метод назначения по умолчанию. Вот почему вы не будете впоследствии использовать релиз. Назначение не увеличивает количество сохраняемых объектов. Обратите внимание, что для таких объектов, как ваша строка, вы почти никогда не захотите использовать assign, потому что вы не являетесь владельцем объекта, и он может быть освобожден от вас. Так что для объектов вы хотите использовать либо сохранить, либо скопировать. Вы можете использовать assign только для скалярных типов, таких как float, NSIntegers, BOOL и т. Д. Обратите внимание, что если вы не используете сборщик мусора, вы получите предупреждение компилятора, если вы не укажете assign, retain или copy.