6

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

@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ですか?
4

1 に答える 1

7

私自身、ここであなたの行に沿って質問をしました: Block references as instance vars in Objective-C

ここここで私の答えを見てください。

于 2010-12-01T15:43:40.260 に答える