6
クラスのメンバーとして使用したときに、ブロックの構文を理解するのに役立つことを期待していました。私は実際にうまく働いているいくつかのコードを持っている:iOS 4 - ブロックをクラスのメンバーとして使用する
@class Structure;
typedef void (^StructureDeleteCallback)(Structure *);
@interface StructureListDelegate : NRFCTableDelegate
{
StructureDeleteCallback _structureDeleteCallback;
}
@property (nonatomic, copy) StructureDeleteCallback structureDeleteCallback;
@end
これは動作しますが、私はtypedef
文の構文を理解したいと思います。実際にtypedefを使用する必要があるかどうかを判断します。
私が読んだことでは、この状況ではtypedef
を使用することが推奨されています。なぜなら、コードをもっとはっきりさせるからです。私はtypedef
なしでこれをしようとするとコンパイルすることができませんでした。
typedef [actual type] [new name for type];
ような::
typedef double CLLocationDegrees;
しかし、私のtypedef
文の構文は、これを一致していないのtypedefの私の理解では、構文は基本的だったということでした。だから、私の質問は以下のとおりです。
- どのように私の
typedef
文の構文は、他のtypedef
文からとても異なる場合があります/私が使用している構文は、実際にコンパイラに何を意味するのでしょうか? - ブロックのメンバーとしてブロック を使用することはできません
typedef
?
ああ!私はtypedefを使わなければそれを動作させることができませんでした。なぜなら、iVarを定義するための構文がまったく違うことに気付かなかったからです。私はまだ[typename] [iVarName]を持っていなければならないと思った。 – GendoIkari
最後のことを明らかにするには... typedefにあるのかブロックを宣言するだけであろうと、基本的にはブロックが他の型よりも宣言する構文が異なりますか?コンパイラは^シンボルを見て、変数の名前が^の後にあることを知っています。これは、int x;ありがとう! – GendoIkari
@Gendolkariあなたはそれを持っています! :) –