В книге Скотта Мейерса «Более эффективный C ++» он приводит очень рациональный аргумент в пользу предпочтения увеличения префикса увеличению постфикса. Короче говоря, на этом языке из-за перегрузки операторов оператор приращения префикса почти всегда быстрее. Objective C не поддерживает перегруженные операторы, но если у вас есть или когда-либо будет выполняться какое-либо программирование на C ++ или Objective-C ++, тогда предпочтение отдается приращению префикса.
Помните, что в большинстве случаев ++ n выглядит так:
n = n + 1
[do something with n]
Тогда как n ++ выглядит (если используется по назначению):
register A = n; // copy n
[do something with n]
n = A + 1;
Как вы можете видеть, в случае с постфиксом есть больше инструкций. В простых циклах for большинство компиляторов достаточно умны, чтобы избежать копирования, если очевидно, что преинкремент n не будет использоваться, но этот случай превращается в префиксный.
Надеюсь, это имеет смысл. Таким образом, вы должны использовать префикс, если вы действительно не хотите, чтобы «побочный эффект» оценивал, а затем увеличивал, что вы получаете от постфиксной версии.