Как продвинуть объявление этого объекта:
@interface MyClass : NSObject <AVAudioSessionDelegate>
{
}
@end
в цели c
Как продвинуть объявление этого объекта:
@interface MyClass : NSObject <AVAudioSessionDelegate>
{
}
@end
в цели c
Это прямое объявление типа ObjC:
@class MyClass;
А это прямое объявление протокола ObjC:
@protocol AVAudioSessionDelegate;
Для тех из вас, кому интересно, почему это полезно: прямые объявления могут использоваться для значительного уменьшения ваших зависимостей и значительного сокращения времени сборки, потому что это позволяет избежать #import
заголовков и / или целых фреймворков (которые затем #import
другие фреймворки). Когда форвардные объявления не используются, многие ненужные заголовки видны другим частям вашей программы - изменение одного заголовка может привести к перекомпиляции многих файлов, что приведет к увеличению времени компиляции и компоновки. Поскольку типы ObjC всегда рассматриваются как указатели (на нашем уровне абстракции), в большинстве случаев достаточно прямого объявления. Затем вы можете объявить свои ivars в своем @implementation
или продолжении класса, а затем #import
можно будет поместить в *.m
файл. Другая причина - избегать циклических зависимостей.
@class
, поскольку Objective-C использует ключевые слова _2 _ / _ 3_. Чтобы найти это, я искал в Google предварительное объявление @interface @implementation.
- person bobobobo; 16.12.2013