Элегантные способы использования Objective C при разработке приложения iOs / OsX? - PullRequest
0 голосов
/ 19 марта 2012

Я занимаюсь разработкой приложений для iOs и OsX уже несколько месяцев, и мне кажется, что я делаю что-то не так.Я стараюсь придерживаться Руководящих принципов и стараюсь использовать объекты, предоставляемые Apple, так часто, как могу.Но кажется, что они делают мой код очень трудным для понимания.

Пример:

Когда я хочу просто «увеличить» объект NSNumber (который не является изменяемым, но вы понимаете, что я имею в виду), Я использую такие неловкие строки:

int value = [counter intValue];
counter = [NSNumber numberWithInt:value +1];

Это действительно необходимо?Существуют ли более элегантные способы (i ++, inc (i) и т. Д.) Для выполнения простых вещей, подобных этой?Особенно, когда вы работаете с координатами, это становится действительно разочаровывающим и трудным для работы.

При работе с Objective CI я чувствую, что я все время распределяю, освобождаю и конвертирую объекты и трачу так много своеговремя и время процессора со всеми этими преобразованиями.Спасибо за ваше время, я очень ценю ваши ответы и с нетерпением жду ваших подсказок!

Ответы [ 3 ]

7 голосов
/ 19 марта 2012

Используя ваш пример, есть ли конкретная причина, по которой вы используете NSNumber для счетчика?Было бы намного лучше использовать int, чтобы вы могли использовать значение ++.

Ключом к хорошему коду Objective-C является использование объектов, когда они имеют смысл.Не бойтесь использовать необъектные типы данных и не бойтесь опускаться (не лучший термин) до C при необходимости.

2 голосов
/ 19 марта 2012

Вы можете написать свою категорию для NSNumber, чтобы реализовать нужные вам методы. Для вашего примера файл категории содержит следующую функцию:

-(NSNumber *)numberByAddingInt:(int)i
{
...
}

Включите этот файл, и затем вы можете назвать его как:

counter = [counter numberByAddingInt:1];
2 голосов
/ 19 марта 2012

Как писал @sosborn: используйте объекты только тогда, когда это необходимо. Но: когда это требуется, а ты все еще чувствуешь себя неправильно, просто не делай этого Напишите макрос для увеличения номера NSNumber, используйте ARC, чтобы компилятор максимально эффективно управлял памятью и т. Д. Если вы действительно беспокоитесь о времени, используйте C или сборку для срочных задач, или C ++, если вы хотите OO.

P. s .: Макрос приращения NSNumber:

#define NSNUM_INC(n) do { n = [NSNumber numberWithInt:[n intValue] + 1]; } while (0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...