Вторник, 07.05.2024,
Приветствую Вас Гость

IP

WeekEnd

Главная » 2009 » Июнь » 30 » Не забываем про С-шные фишки при разработке под iPhone
Не забываем про С-шные фишки при разработке под iPhone
14:20
Думаю, все, кто хотя-бы делает вид, что программирует под iPhone, знают, что Objective-C — это надстройка на C. Тем не менее, объекты, начинающиеся с NS* порой производят на программистов неизгладимое впечатление, и они начинают использовать классы библиотек не по их прямому назначению, получая при этом излишки съеденной памяти да и просто геморрой при программировании.

В одном из форумов я встретил такой вопиющий код:

hitBoxArray = [[NSMutableArray alloc] init];
NSArray *boxes = [NSArray arrayWithObjects:
@"{{64,404},{48,48}}",
@"{{112,404},{48,48}}",
@"{{160,404},{48,48}}",
@"{{208,404},{48,48}}",
@"{{64,356},{48,48}}",
@"{{112,356},{48,48}}",
@"{{160,356},{48,48}}",
@"{{208,356},{48,48}}",
@"{{64,308},{48,48}}",
@"{{112,308},{48,48}}",
@"{{160,308},{48,48}}",
@"{{208,308},{48,48}}",
@"{{64,260},{48,48}}",
@"{{112,260},{48,48}}",
@"{{160,260},{48,48}}",
@"{{208,260},{48,48}}",
nil];

CGRect aRect;
HitBoxRect *hRect;
for (int i = 0; i < [boxes count]; i++)
{
aRect = CGRectFromString([boxes objectAtIndex:i]);
hRect = [[HitBoxRect alloc] initWithCGRect:aRect];
[hitBoxArray addObject:hRect];
[hRect release];
}


Т.е. перец смекнул, что создать NSArray структур, коими являются CGRect-ы у него не получится, поэтому, хох, будем создавать NSArray со строками, а потом преобразовывать в CGRect. Как только у себя в коде вы начинаете наблюдать такую вермишель — это верный признак того, что что-то вы делаете не так. Время остановиться и подумать.

А ведь если CGRect — это С-шная структура, так почему бы не воспользоваться обычным С-шным массивом для хранения нескольких ее экземпляров? Также например, ширина х высота у него неизменны, а повторяется каждый раз. От всего этого можно и нужно избавляться.

Вот как выглядит аналогичный момент у меня в коде:

#import "PresetViewController.h"

#define FRAME_WIDTH 75
#define FRAME_HEIGHT 75

#define FRAME_COL_COUNT 3
#define FRAME_ROW_COUNT 4

static int frameColumns[] = { 22, 124, 223 };
static int frameRows[] = { 29, 128, 227, 326 };

@implementation PresetViewController

...

- (void)viewDidLoad {

[super viewDidLoad];

for (int row = 0; row < FRAME_ROW_COUNT; row++) {
for (int col = 0; col < FRAME_COL_COUNT; col++) {

CGRect frame = CGRectMake(frameColumns[col], frameRows[row], FRAME_WIDTH, FRAME_HEIGHT);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:frame];
[self.view addSubview:imageView];
[imageView release];
}
}
}

@end


Сразу чувствуется разница, что вы гладите по шерсти, а не против. Так что не «забывайма» про С при программировании под iPhone. Порой это может сильно упростить вещи.


.

.

.

.

.

.

.

Букмекерская контора  принимает ставки на спортивные события с высокими коэффициентами и лимитами на фаворитов. Футбол, теннис, баскетбол, хоккей и даже ... А если вы любитель казино - тогда и эту слабость мы сможем удовлетворить.

.

.

.

.

.

В течение последних лет мы поддерживаем для Вас базу всех актуальных предложений аренды офиса в Москве. В ней содержится максимально полный список арендных помещений. 100% гарантия нахождения помещения для вас в кратчайшие сроки.

Категория: Технологии | Просмотров: 870 | Добавил: chubaka | Рейтинг: 0.0/0 |
Всего комментариев: 1
1 Martin  
0
You keep it up now, unerdsatnd? Really good to know.

Имя *:
Email *:
Код *:
Форма входа
Категории раздела
Авто, мото, вело, авиа...
Спортивные фотографии и приколы
Взгляд в прошлое СССР
Природные катастрофы
Кадр дня
Анекдоты, истории, афоризмы
Присланное посетителями
Аварии и страшные фото ДТП
Фото приколы с юмором
Игры
Кино, Музыка, ТВ
Работа, Карьера
Звездная жизнь
Строительство и Ремонт
Бизнес, Финансы
Законодательство
Новости СПОРТА
Другое
Дизайн
Железо
Новости и СМИ
Политика
Путешествия, Отдых
Технологии
Технологии
Архитетура
Архитектура
Медиа
Медиа
Поиск
Календарь
«  Июнь 2009  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Архив записей
Наш опрос
Оцените мой сайт
Всего ответов: 28
Друзья сайта
  • Программы для всех
  • ukurok.at.ua
  • Статистика
    online dating services
    Besucherzahler
    счетчик для сайта

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Ценящим наш труд

    Если у Вас на кошельке завалялась лишняя копеечка,поддержите монеткой сайт. От Вас не убудет,а мы, сложив монетки, сделаем проект WeekEnd еще лучше...

    Z 288502230873

    Z 883486288952

    R 133201635402

    U 275524832835