Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
В Cocoa вы предпочитаете NSInteger или int, и почему?
NSInteger / NSUInteger -это Cocoa-определенные замены для обычных встроенных типов.
Есть ли какая-то польза от использования типов NS* над встроенными модулями? Что вы предпочитаете и почему? Являются ли NSInteger и int одинаковой шириной на 32-битных / 64-битных платформах?
Насколько я понимаю, это NSInteger и др. являются архитектурно безопасными версиями соответствующих типов C. В основном их размер варьируется в зависимости от архитектуры, но NSInteger, например, гарантированно содержит любой допустимый указатель для текущей архитектуры.
Apple рекомендует вам использовать их для работы с OS X 10.5 и далее, и Apple API:s будет использовать их, так что это определенно хорошая идея, чтобы войти в привычку использовать их. Они требуют немного большего набора текста, но кроме этого, кажется, нет никакой причины не использовать их.
Проблемы квантования для 64-разрядной среды выполнения
В некоторых ситуациях могут быть веские причины использовать стандартные типы вместо NSInteger : "unexpected" объем памяти в 64-битной системе раздут.
Ясно, что если целое число равно 8 вместо 4 байт, то объем памяти, занимаемый значениями, удваивается. Однако, учитывая, что не каждое значение является целым числом, обычно не следует ожидать, что объем памяти вашего приложения удвоится. Однако способ распределения памяти в Mac OS X меняется в зависимости от объема запрашиваемой памяти.
В настоящее время, если вы просите 512 байт или меньше, malloc округляется до следующего кратного 16 байт. Однако если вы просите больше 512 байт, то malloc округляется до следующего кратного 512 (по крайней мере 1024 байта). Предположим тогда, что вы определяете класс, который-среди прочих-объявляет пять переменных экземпляра NSInteger , и что в 32-разрядной системе каждый экземпляр занимает, скажем, 272 байта. В 64-разрядной системе экземпляры теоретически потребовали бы 544 байта. Но из-за стратегии распределения памяти каждый из них фактически займет 1024 байта (почти четырехкратное увеличение). Если вы используете большое количество этих объектов, объем памяти вашего приложения может быть значительно больше, чем можно было бы ожидать в противном случае. Если бы вы заменили переменные NSInteger на переменные sint_32 , вы бы использовали только 512 байт.
Поэтому, когда вы выбираете, что использовать scalar, убедитесь, что вы выбрали что-то разумное. Есть ли какая-либо причина, по которой вам нужно значение больше, чем вам нужно в вашем 32-разрядном приложении? Использование 64-битного целого числа для подсчета количества секунд вряд ли потребуется...
64-битный код фактически является смыслом существования для NSInteger и NSUInteger; до 10.5 они не существовали. Эти два параметра просто определены как Long в 64-битном и как ints в 32-битном коде:
#if __LP64__ || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
Таким образом, используя их вместо более простых типов C, когда вы хотите размер 'bit-native'.
У CocoaDev есть еще кое-какая информация.