Objective-C & iOS Dev - PullRequest
       3

Objective-C & iOS Dev

1 голос
/ 11 марта 2011

Я только начал разрабатывать iOS с использованием target-c, и у меня возникли некоторые проблемы с привыканием к синтаксису. Я наконец начинаю понимать семантику - даже причину их, но одна вещь меня озадачивает.

При определении выходов и действий для приложения iOS: почему выходы определены в объявлении интерфейса, а не в действиях и других объявлениях, определенных вне объявления интерфейса?

Ответы [ 3 ]

1 голос
/ 11 марта 2011

Потому что торговые точки не имеют реализации.Это просто старые переменные экземпляра.

С другой стороны, действия являются методами (объектными функциями), и их необходимо реализовать.


Методы объявлены фактически, но внефигурные скобки, в то время как ивары бывают объявлены внутри фигурных скобок.Все между @interface и @end находится в интерфейсе.


@interface MyClass {
   instance variables here. outlets are also instance variables
}

methods here. actions are also methods
@end

Нет причины , почему .Это просто синтаксис.:)

0 голосов
/ 11 марта 2011

IBOutlet и IBAction не являются типами данных; они просто для Интерфейсного Разработчика, чтобы знать, какие переменные являются выходами, а какие методы действиями.

Итак, когда вы пишете это:

@interface AClass
{
    IBOutlet UIButton *someButton;
}

- (IBAction) buttonTap:(id)sender;

@end

На самом деле, когда мы скомпилируем, получается что-то вроде этого:

@interface AClass
{
   UIButton *someButton;
}

- (void) buttonTap:(id)sender;

@end
0 голосов
/ 11 марта 2011

У вас действительно есть возможность определить выходы в объявлении свойства, если вам удобнее:

@interface SomeViewController : UIViewController 
{
    UITextField*    aTextField;

}
@property (nonatomic, retain) IBOutlet UITextField* aTextField;

@end

IBAction и IBOutlet на самом деле просто подсказки для конструктора интерфейса, вот фактические определения:

#ifndef IBOutlet
#define IBOutlet
#endif

#ifndef IBOutletCollection
#define IBOutletCollection(ClassName)
#endif

#ifndef IBAction
#define IBAction void
#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...