1. ホーム
  2. iphone

[解決済み] NSComparisonResultとNSComparator - これらは何ですか?

2022-02-18 15:55:59

質問

とは何ですか? NSComparisonResultNSComparator ?

型定義の一つ、みたいなのを見たことがあります。

typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);

関数ポインタと何か違いがあるのでしょうか?

また、推測の域を出ないのが ^ の記号が意味します。

どのように解決するのですか?

^ を意味する。 ブロックタイプ 関数ポインタと同じような概念です。

typedef NSComparisonResult (^NSComparator)(id obj1, id obj2);
//          ^                      ^                ^
//   return type of block      type name       arguments

これは、タイプ NSComparator ブロック という型のオブジェクトを2つ取り込みます。 id という obj1obj2 を返します。 NSComparisonResult .

具体的には NSComparator が定義されています。 ファンデーションデータ型リファレンス .

また、Cブロックについてもっと知りたい方は、こちらのADCの記事をご覧ください。 ブロック プログラミングトピックス .

NSComparator compareStuff = ^(id obj1, id obj2) {
   return NSOrderedSame;
};

NSComparisonResult compResult = compareStuff(someObject, someOtherObject);