xcode7でNullabilityを定義 したヘッダにblocksをtypedef定義したらエラーが出た
typedef (^ SimpleBlock) (id obj);
とかをconfig的な場所で定義して、いろんな場所で使っていた。
たまたまヘッダーファイルをがっつりいじる機会があったので、nonnull
とかnullable
とかも書いて、ヘッダの上の方で定義していたので存在を忘れていた。
そのままコンパイルしたらワーニングが出ていた。
pointer is missing a nullability type specifier (_Nonnull, _Nullable, or _Null_unspecified)
あ、すみません。と思ってnullable
と書いてコンパイルしたらエラー。
unknown type name 'nullable'
expected ')'
こんな感じでいくつか。
結論は最初のワーニングに書いてあって、この通りに書けばよかった。
_Nonnull
_Nullable
_Null_unspecified
つまりこんな。
typedef (^ SimpleBlock) (_Nullable id obj);
それにしても'nullable'
なんて知らないとか嘘こけよと。
あと')'
も関係ないだろ。。
自分がtypedefで宣言してよく使うのはこんな感じで、都度都度カスタマイズしてまうs。
typedef void (^SimpleBlock)(void);
typedef void (^SimpleObjectBlock)(id obj);
typedef void (^SimpleErrorBlock)(id obj, NSError *error);
typedef void (^SimpleFlagBlock)(BOOL flag);