macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

sortedArrayUsingFunction:context:hint:

INDEX>Foundation>NSArray

ヒントを利用して配列内の要素を比較して昇順にソートします
-(NSArray *)sortedArrayUsingFunction:(NSInteger (*)(id, id, void *))compare
                    context:(void *)context
                    hint:(NSData *)hint

解説

ヒントを利用して配列内の要素を比較して昇順にソートします。
配列内の要素を関数で比較して昇順にソートしして、新しい配列を返します。
返される新しい配列には、参照情報が入っていて、元の要素がコピーされている訳ではありません。各要素にはretainメッセ−ジが送信されます。
比較関数は
NSInteger intSort(id val1, id val2, void *context)
のような形式で、2つの要素を比較して最初の要素<次の要素の時はNSOrderedAscendingを、最初の要素>次の要素の時はNSOrderedDescendingを、同じ時はNSOrderedSameを返します。
ヒントはsortedArrayHintを使って取得します。既にソートが行われていることがわかっている場合にはsortedArrayUsingFunction:context:よりも早くソートを行うことができます。

返り値

( NSArray * )

配列(NSArrayまたはそのサブクラス)

引数

( NSInteger (*)(id, id, void *) )compare
( int (*)(id, id, void *) )compare

比較関数

( void * )context

追加情報

( NSData * )hint

ソートヒントのデータ

クラス

NSArray

Instance Methods

使用可能

10.0
iOS2.0

参照

例文

#import "MyObject.h"

@implementation MyObject

- (IBAction)myAction:(id)sender
{
NSArray *ar =[[NSArray alloc] initWithObjects:@"123",@"12",@"1234",@"12345",nil] ;
NSArray *retArr =[NSArray alloc];
NSData *hint = [ar sortedArrayHint]; 

retArr = [ar sortedArrayUsingFunction:intSort context:NULL hint:hint];

NSLog([retArr description]);
}

int intSort(id val1, id val2, void *context)
{
    int iVal1 = [val1 intValue];
    int iVal2 = [val2 intValue];
    if (iVal1 < iVal2)
        return NSOrderedAscending;
    else if (iVal1 > iVal2)
        return NSOrderedDescending;
    else
        return NSOrderedSame;
}
@end