Установите NSDecimal в ноль

Каковы различные способы установки NSDecimal в ноль? Я не заинтересован ни в одном из 3, которые я нашел до сих пор.

 NSDecimal zero = {0}; // Not obvious what's going on here. NSDecimal zero = @(0).decimalValue; // @(0) appears to always return the same instance. NSDecimal zero = [NSDecimalNumber zero].decimalValue; // [NSDecimalNumber zero] appears to always return the same instance. 

Есть ли тот, который наиболее приемлем, чем другие? Я пропустил какую-то константу / функцию NSDecimalZero ?

Я никогда не замечал, что NSDecimal не имеет хорошей функции Create .

Я не могу представить другого метода, чем список 3, который вы перечисляете.

 NSDecimal zero = {0}; 

Вы правы, это не очевидно, это на самом деле очень далеко не очевидно. Обычные программисты не будут искать документацию, чтобы узнать, какое значение будет представлять структура со всеми атрибутами, установленными на ноль.

 NSDecimal zero = @(0).decimalValue 

Мне это не нравится, потому что он использует NSNumber и без необходимости создает объект с автореализацией.

 NSDecimal zero = [NSDecimalNumber zero].decimalValue 

Это мое предпочтительное решение. Использование NSDecimal структур напрямую выполняется в основном для повышения производительности (без создания объектов в куче). Этот метод соответствует намерению, поскольку он использует константу singleton.

Однако, если у вас много кода с использованием NSDecimal и производительность для вас действительно важна, создайте свою собственную функцию / макрос, чтобы инициализировать структуру и использовать эту функцию повсюду. Тогда эта проблема не будет иметь для вас значения, потому что имя функции сделает код очевидным.

NSDecimal – это структура C, которую вы не должны заглядывать внутрь (вы можете, но не должны), чтобы исключить первое, которое технически выглядит внутри структуры.

Любой из двух вторых абсолютно хорош. Обратите внимание, что в C, присваивая структуре, копирует все поля, поэтому, хотя [NSDecimalNumber zero] всегда возвращает тот же объект, ваш NSDecimal будет уникальной структурой и изменение его содержимого не повлияет ни на какой другой NSDecimal, который был «создан» «таким же образом.

Я думаю, вам нужно использовать NSDecimalNumber,

Обычно мы делаем так:

 NSDecimalNumber *zeroDecimal = [[NSDecimalNumber alloc] initWithFloat:0.f]; 

NSDecimal zero = @ (0) .decimalValue; // @ (0) всегда возвращает тот же экземпляр.

NSDecimal zero = [NSDecimalNumber zero] .decimalValue; // [NSDecimalNumber zero] всегда возвращает тот же экземпляр.

Выше двух возвращает эквивалентное значение 0.0, первое – только сокращенное обозначение для второго. Вы помещали 0 в NSDecimalNumber, используя новый синтаксис.


Однако NSDecimal является typedefStruct, который выглядит так

 typedef struct { signed int _exponent:8; unsigned int _length:4; // length == 0 && isNegative -> NaN unsigned int _isNegative:1; unsigned int _isCompact:1; unsigned int _reserved:18; unsigned short _mantissa[NSDecimalMaxSize]; } NSDecimal; 
  • Как прикреплять два заголовка раздела UITableView к вершине UITableView один над другим при прокрутке
  • Вызов действия кнопки в модульном тесте в Xcode
  • Ожидаемый идентификатор или '(' Использование typedef enum Objective-C
  • Удаление текстовой метки / кнопки во время компиляции / время выполнения на Xcode
  • NSMakeRange заставляет приложение блокировать; медленная производительность
  • Есть ли какая-либо сторонняя библиотека, доступная в iOS (Objc) для `textinputlayout`, например, android
  • Невозможно скрыть MBProgressHUD в iOS
  • Ошибка в UIApplicationMain при настройке iOS 6 в шаблоне проекта Xcode
  • Горизонтальная прокрутка с кнопками в iOS
  • Данные Unicode из NSData в NSString
  • создание кнопок в skview, чтобы указать на разные сцены
  • Interesting Posts

    Использование пульта дистанционного управления с AVPlayer в iOS 7 и 8

    Как я обнаруживаю только одно касание, когда рука применяется к экрану iPad?

    Как динамически связывать Device Frameworks в приложении iOS?

    UIScrollView не вращается в ландшафт

    Может ли UIApplication.shared.applicationState быть надежно вызываться из не основного потока?

    захват движения или нажатия клавиш, таких как (Angry Bird), используя сенсорный экран iphone

    AFNetworking – iOS Получение JSON, когда PHP печатает его

    ios – как заставить segue работать только после выполнения какого-либо кода?

    Страница настроек отображается только один раз.

    Быстрый словарь NSCoding с быстрым кортежем как значения

    «Ожидаемый тип» при осуществлении делегирования

    Установить изображение в строке и столбце в uigridview

    RestKit 0.20.0-rc1 – Как сопоставить несколько параметров ошибки?

    Почему размер UICollectionView меньше в iOS6, чем я определил?

    Ошибка после отправки приложения для хранения – : непризнанный селектор, отправленный в экземпляр

    Давайте будем гением компьютера.