Несколько быстрых вопросов о программировании iOS в Xcode - PullRequest
0 голосов
/ 01 августа 2011

1) Должен ли я импортировать классы (#import "Person.h") для файла интерфейса .h или использовать @class (@class Person)?И я всегда должен использовать импорт в .m, верно?

2) Могу ли я избавиться от следующих методов, если я не использую функцию автоматического поворота?

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

3) Нужно ли отделять IVariables от свойств при их объявлении в интерфейсе?Я вижу, как выполняются оба способа.

Редактировать:

А как насчет этих методов?

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

Ответы [ 2 ]

0 голосов
/ 01 августа 2011
  1. Вы можете использовать @class для типов, но если ваш класс подклассов, вам нужно импортировать последние.Аналогично для протоколов.Вам, вероятно, потребуется импортировать класс, например #import "Person.h", вверху файла реализации.Хорошее правило, которое я могу предложить: если компилятор захлебнется, импортируйте!

  2. Да.Как указывает jtbandes, вызов переходит к super, который имеет реализацию по умолчанию.

  3. Вам не нужны объявления iVar, если есть свойство для их использования, я делаюбез, потому что я не хочу загромождать свой интерфейс.Я думаю, что это работает с Objective-C 2.0, а не с iOS4.0.(Я использовал это на iOS3.0, например).Кроме того, исключение iVars помогает предотвратить появление зомби и поддерживать правильный счет удержания - это побуждает вас использовать правильный установщик.Но иногда полезно использовать iVars без свойств и объявление "@private", если ваш объект должен хранить некоторые данные, но вы не хотите их показывать.Я часто сталкиваюсь с примером UITableViewController, который может содержать массив для заполнения его строк.

0 голосов
/ 01 августа 2011
  1. @class обычно достаточно в вашем заголовочном файле.См. этот вопрос .
  2. Все эти методы работают по умолчанию, поэтому вы можете удалить их независимо от того, используете ли вы автоповорот.Вы хотели бы сохранить их, если вам нужно добавить дополнительное поведение.(Использование super означает вызов реализации суперкласса, т. Е. Реализации, которая использовалась бы, если бы вы не определили этот метод. Поэтому, если вы только , вызываете super и больше ничего не делаете,в этом нет никакого смысла.)
  3. Это нормально, оставить их без внимания, но я думаю, что это работает только после iOS 4. См. этот вопрос .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...