Object-C,NSArraySortTest,配列ソートの3方式


夜帰ってきて、Object-Cの例を書き続けて、今日iOSの可視化インタフェースのプログラムを書くつもりはなくて、疲れました.
さっきdadyからまた電話がかかってきて、いつものやり方で、うんざりしました.
実は、私はずっと一つの観点で、どんなことがあっても、一日中楽しくない様子をしないでください.
楽しく暮らして、生きているうちに大切にしなければなりません.
配列ソートを書いたばかりで、オブジェクトが持つcompareメソッド、転送比較関数、匿名関数-コードブロックを使用する3つの方法があります.
個人的には、本質は2つの方法だと思います.
1つは、Javaのオブジェクトのように、Comparableインタフェースを実装するcomparareToメソッドです.
1つは、比較器Comparatorに転送され、比較的柔軟である.
コード#コード#
//
//  main.m
//  NSArraySort
//
//  Created by fansunion on 15/12/2.
//  Copyright (c) 2015  demo. All rights reserved.
//

#import <Foundation/Foundation.h>

//     main    , C    , java   
//    ,    
NSComparisonResult intSort(id a,id b,void* context){
    int v1 =  [a intValue];
    int v2 = [b intValue];
    if(v1 > v2){
        return NSOrderedAscending;
    }else if(v1 < v2){
        return NSOrderedDescending;
    }else{
        return NSOrderedSame;
    }
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //     ,     compare    。   Java     Comparable   compareTo  
        NSArray* strArray = @[@"Java",@"Android",@"Object-C"];
        strArray = [strArray sortedArrayUsingSelector:@selector(compare:)];
        NSLog(@("%@"),strArray);
        //    ,      。   Java   Comparator  ,        。
        NSArray* numberArray =@[[NSNumber numberWithInteger:2015],[NSNumber numberWithInt:1949],[NSNumber numberWithInt:2020]];
        numberArray = [numberArray sortedArrayUsingFunction:intSort context:nil];
        NSLog(@"%@",numberArray);
        //       ,    (  2          ),  
        NSArray* numberArrayAsc =[numberArray sortedArrayUsingComparator:^(id a,id b){
            int v1 = [a intValue];
            int v2 = [b intValue];
            if(v1 > v2){
                return NSOrderedDescending;
            }else if(v1 < v2){
                return NSOrderedAscending;
            }else{
                return NSOrderedSame;
            }
        }];
        NSLog(@"%@",numberArrayAsc);
    }
    return 0;
}


プログラムしゅつりょく
2015-12-02 20:39:09.500 NSArraySort[5534:380948] (
    Android,
    Java,
    "Object-C"
)
2015-12-02 20:39:09.502 NSArraySort[5534:380948] (
    2020,
    2015,
    1949
)
2015-12-02 20:39:09.502 NSArraySort[5534:380948] (
    1949,
    2015,
    2020
)
Program ended with exit code: 0