Полагаю, единственная разница между UInt32
и unsigned int
заключается в том, что UInt32
гарантированно будет иметь длину 32 бита, тогда как технически unsigned int
может быть короче, если вы работаете (скажем) на <32-разрядная операционная система. </p>
Однако, учитывая, что Mac и iPhone являются как минимум 32-разрядными системами, можно безопасно использовать unsigned int
, UInt32
и NSUInteger
с разумной взаимозаменяемостью. Единственное отличие здесь в том, что NSUInteger
может иметь длину 64 бита (на Mac при компиляции для x86_64).
Что касается вашего вопроса unsigned long
против unsigned int
, UInt32
является typedef'd для unsigned long
, снова указывая на то, что его можно использовать взаимозаменяемо. unsigned long
гарантированно будет по крайней мере таким же большим, как unsigned int
.