Я не уверен, что «статические» и «динамические» являются подходящими терминами.
[NSString stringWithFormat:...]
- это удобный метод.Если вам нужна отформатированная строка, которую вы не собираетесь хранить слишком долго, вы можете использовать этот удобный метод, чтобы избежать беспорядка, который alloc
+ initWithFormat:
+ release
может внести в ваш [в противном случае простой] код.
[[NSString alloc] initWithFormat:...]
иногда яснее для читателя, что время жизни этого объекта будет обрабатываться явно (т. Е. С release
позже), хотя я обнаружил, что встречается [[[NSString alloc] initWithFormat:...] autorelease]
местами.
Когда вы разрабатываете класс, вы должны определить, предназначены ли экземпляры вашего класса для частого / быстрого использования, а не для длительного (или того и другого).Если вы считаете, что ваши классы можно использовать часто или быстро, то предоставление удобного метода поможет уменьшить беспорядок и упростить код, который использует класс.
Например, NSWindow
не класс, который вы часто создаете и удаляете экземпляры, поэтому нет удобных методов для создания NSWindow
экземпляров, вам нужно пройти по маршруту alloc
+ init
(на самом деле, NSWindow
обычно не являетсякласс, который вы должны создать экземпляры вручную в любом случае).С другой стороны, строки, массивы, словари, наборы и т. Д., Это все вещи, которые часто создаются и часто отбрасываются, поэтому у них всех есть удобные методы, которые облегчают их создание и управление ими.