iOS 4 - Использование блоков в качестве члена класса - PullRequest
6 голосов
/ 01 декабря 2010

Я надеялся, что кто-нибудь сможет помочь мне понять синтаксис блоков при использовании в качестве членов класса. У меня есть код, который на самом деле работает просто отлично:

@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?

1 Ответ

7 голосов
/ 01 декабря 2010

Я сам задал вопрос в соответствии с вашим здесь: Блокировать ссылки как экземпляры переменных в Objective-C

Смотрите мои ответы здесь и здесь .

...