2015-08-09 2 views
0

В чем разница между этими двумя подходами для создания возражений?Создание объекта с использованием литералов NSNumber

  1. NSNumber *aInt= @54;

  2. NSNumber *aInt= [NSNumber numberWithInt:54];

Я знаю, что первый подход NSNumber буквальный и второе это методы класса NSNumber. Оба используются для создания объекта NSNumber. Но какой подход лучше? Если я создаю объект, используя литерал, то как распределяется память? Как он отличается от второго подхода? Пожалуйста, предложите мне несколько ключевых моментов в отношении этих концепций, чтобы я предпочел более удобный подход к созданию объекта NSNumber.

Я знаю, что объект создан во время выполнения. Создаются ли объекты литералов во время выполнения? предоставьте некоторые существенные ключевые моменты, чтобы устранить мои сомнения.

+3

«Но какой подход лучше?» - пожалуйста, ** не делайте. ** Просто не задавайте таких вопросов. Они жалко испытывают недостаток в любом контексте. Лучше ** для чего? ** Какой язык лучше, Python или английский? Все это зависит. Для программирования Python. Для написания стихов, английский.Точно так же литерал объекта короче, более разборчивым, но явный вызов метода обратно совместим со старыми компиляторами. –

ответ

2

Они идентичны. Фактически, они переводятся в один и тот же код во время компиляции.

Я всегда обращаюсь к буквальному, потому что его легче читать.

0

В чем разница между этими двумя подходами к возражению создание?

Они идентичны.

Ответы на:

No. 1:

Использование @ -prefix автоматически завернуть скалярные типы, как int или float.

№ 2:

numberWith[type] Использование создает NSNumber специально и для этого легко отличить.

Я не уверен в управлении памятью, но я думаю, говоря о распределении памяти, это то же самое.


Я лично использую numberWith[type], потому что это более различимым (для меня), я имею в виду типы он держит, и я не придется беспокоиться о совместимости с предыдущими версиями, но до сих пор у меня есть знания о литералов, так что я не имею никакого вопрос использования.

Лучший подход очень трудно ответить, это полностью зависит от вас/разработчика.

Вы также можете проверить это link

И пожалуйста, не задавать слишком много вопросов в одном посте. Ура! :)

Смежные вопросы