クラスのメンバーとして使用されるブロックの構文を誰かが理解するのを手伝ってくれることを望んでいました. 実際に問題なく動作するコードがいくつかあります。
@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
ですか?