logo site
Страницы
  • Карта Сайта
Реклама
Рубрики
  • Basic
  • C#
  • Flash
  • Net
  • Objective-C
  • Pascal
  • Ruby
  • SQL
  • Новости
  • Проектирование и архитектура
  • Фортран
Партнеры:
декабря
22

Objective-C программирование для iPhone: Апрель 2009

Автор: admin, размещено в: Objective-C, комментарии: Комментариев нет

Как вам скорее всего знаменито, Objective-C разрешает проворно отчетливо творить сеттеры и геттеры при помощи директив @property и @synthesize

Однако основное я склонен думать, что достоинство данных @property в способностях, самостоятельно представляемых приспособлением Key-Value-Mechanisms Об данных способностях чуток поподробнее:

…

@property int integerProperty;

@property id idProperty;

@property NSString *strProperty;

1. Кроме того доступ к свойствам по их фамилии при проведении программы. Казалось, имя характеристики быть может безызвестно на шаге компиляции и рассчитываться лишь после начала. Разумеется обратите внимание, что способ спокойно действует исключительно с преемниками NSObject И в следствии этого примитивные разновидности обязаны быть преобразованы в NSValue и NSNumber Обратное переустройство приспособление property добровольно делает сам автоматом

ClassWithProperties *cl;

 [cl setValue: [NSNumber numberWithInt: 10] forKey: @”integerProperty”];

 [cl setValue: self forKey: @"idProperty"];

 [cl setValue: @"just a string" forKey: @"strProperty"];

 ……

 int i = [[cl valueForKey: @"integerProperty"] intValue];

 NSString *s = [cl valueForKey: @"strProperty"];

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

[cl setValue: @"someValue" forKey: @"AnyNameAsYouWant"]; и  [cl valueForKey: @"AnyNameAsYouWant"];

даже ежели на шаге компиляции данное фамилия “AnyNameAsYouWant” безызвестно.  Тут на поддержка прибывают способы NSObject-а (void)setValue:(id)value forUndefinedKey:(NSString *)key и  (id)valueForUndefinedKey:(NSString *)key переопределив данные способы мы спокойно сможем долго беречь и великолепно приобретенные ценности к примеру в NSMutableDictionary.

3. Быть может получение фамилий всех параметров. Наконец, если мы тщетно пытаемся обрести ценности всех  property класса (к примеру дабы их сберечь при выходе), то нам необходимо сначала обрести все фамилии, а позже через valueForKey станет возможно вынуть и ценности. Кажется, имена в целом зрелому возрасту outCount;

 objc_property_t *properties = class_copyPropertyList([AnyClassThatYouWant class], &outCount);

     objc_property_t property = properties[i];

     const char *propName = property_getName(property);

        NSString *name = [NSString stringWithUTF8String:propName];

free(properties);

Внимание! сходственным образом невозможно обрести характеристики, которые были торжественно оглашены в суперклассе. Надеюсь если Вам потребуются на самом деле ВСЕ характеристики, другими словами [NSobject superclass];

Оставить комментарий

Вы должны быть зарегистрироавны чтобы оставить комментарий.

  • Категории
  • Новости
  • Популярное
  • Комментарии
  • Архив
Programmirovanie. Все права защищены