Objective-Cブロックプロパティを定義することはできますが、Xcode 4ではフルコード補完が可能ですか?Xcodeコード補完を使用したObjective-Cブロックプロパティ
私はブロックを定義するためのtypedefを使用する場合:
typedef void (^CompletionBlock)(MyObject *myObj);
して、プロパティを定義します。
@property (nonatomic, copy) CompletionBlock completionBlock;
、その後@synthesize
私は完全なコードを得ることはありませんプロパティセッターを呼び出すときに完了します。 Xcodeはtypedefを使用します。そのため、コード補完では、ブロックパラメータで完全なブロック構文が使用されず、typedefが使用されます。
Iの代わりのtypedefの完全なブロック構文使用ヘッダにおけるメソッドプロトタイプ定義する場合:
@property (nonatomic, copy) void (^completionBlock)(MyObject *myObj);
した後、私は@synthesize
使用を提供セッターは完全なコード補完を使用することに接近私は@synthesize
としようとすると、最後に
[self setCompletionBlock:(void (^)(MyObject *)) { ... }
:構文だが決定的にそれがパラメータ名を抜けてその後、セッターの実装をオーバーライドしたり、ヘッダにプロトタイプを置く:
- (void)setCompletionBlock:(void (^)(MyObject *myObj))completionBlock {...}
警告は、プロパティの型がアクセサー・タイプと一致していないことを伝える上げています。どのように構文を完成させようとも、コード補完の完全な構文を持つブロックプロパティとセッターを定義することはできません。私はケーキを食べて食べることができますか?
ありがとうございます!
それは質問をharkens ...魔法のように、動作しますか?機能の低下と半冗長なコード行については?たぶんこれはアップルの言葉です... ___ "しないでください!" ___ ?? –