DX・デジタルトランスフォーメーション

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版

ブロックチェーン・暗号技術 | android | iOS | Web | アプリの著作権 | 日本のなりたち | 禅・大乗仏教 | 新しい社会

関数ポインタとObjective-Cブロックス

C言語にはPHPなどと同じように、ある関数のアドレスをポインタ変数に格納することができる仕組みがある。

C言語の派生語である Objective-C でも同様に関数ポインタを使うことができる。

・通常のポインタ変数

int *pointerVariable;

・関数ポインタ

int (*functionName)(void);返り値:int関数名:functionName引数:void通常は typedef で定義して用いるtypedef  int (*functionName)(void);functionName functionPointerVariable;

・ブロックス (objectivec blocks)

Objective-Cのブロックスも関数ポインタのようなものと考えて良い。

void (^blocksName)(NSInteger);返り値:void関数名:blocksName引数:NSIntegertypedef void (^BLOCKS_NAME)(void);BLOCKS_NAME blocksVariable = ^{};

関数ポインタ(ブロックスポインタ)はメソッドの引数で用いられることが多い。

- (void)methodName:(void (^)(NSDictionary *))bloksPointerVariable {}

・関数ポインタを返す関数へのポインタ

複雑な書式なのはコンパイラが通常の形式だと認識できないためにこういう特殊な書式になっている。

int (*functionName(int))(void);返り値(関数ポインタ):int (*)(void)関数名:functionName引数:int分かりづらいので、通常は typedef を使ったこちらの書式で記述することが多い。typedef int (*FUNCTION_NAME)(void);FUNCTION_NAME (* functionName)(int);

2023年12月
     12
3456789
10111213141516
17181920212223
24252627282930
31      
android
iOS
web
?スA?スv?ス?ス?スフ抵ソス?ス??
?スu?ス?ス?スb?スN?ス`?スF?ス[?ス?ス?ス^?ステ搾ソス?スZ?スp
?スV?ス?ス?ス?ス?スミ会ソス
?スT?スE?ス?ス謨ァ?ス?ス
?ス?ス?ス{?スフなりた?ス?ス

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版
デジタルトランスフォーメーションで新しい生活を提案!