Я надеялся, что кто-нибудь сможет помочь мне понять синтаксис блоков при использовании в качестве членов класса. У меня есть код, который на самом деле работает просто отлично:
@class Structure;
typedef void (^StructureDeleteCallback)(Structure *);
@interface StructureListDelegate : NRFCTableDelegate
{
StructureDeleteCallback _structureDeleteCallback;
}
@property (nonatomic, copy) StructureDeleteCallback structureDeleteCallback;
@end
Это работает, но я бы хотел понять синтаксис оператора typedef
; и действительно ли требуется использовать typedef.
То, что я прочитал, говорит о том, что рекомендуется использовать typedef
в этой ситуации, потому что это делает код намного понятнее; но я не смог заставить его скомпилироваться при попытке сделать это без typedef
. Мое понимание typedef заключалось в том, что синтаксис был в основном:
typedef [actual type] [new name for type];
Например:
typedef double CLLocationDegrees;
Но синтаксис моего оператора typedef
не соответствует этому. Итак, мои вопросы:
- Как может синтаксис моего
typedef
Заявление так сильно отличается от других
typedef
операторов / что на самом деле означает используемый мной синтаксис для компилятора?
- Возможно ли
иметь блок в качестве члена класса
без использования
typedef
?