晚上回来,继续写Object-C的例子,今天不打算写iOS可视化界面的程序,太累了。

刚刚dady又电话过来,老一套,烦死了。

其实,我一直一个观点,无论发生什么事情,不要整天一副不开心的样子。

开开心心过日子,活着就要懂得珍惜。

刚刚写了数组排序,有3种方法,使用对象自带的compare方法、传入比较函数、匿名函数-代码块。

个人认为,本质是2种方法。

一种是,类似Java中的对象,实现Comparable接口的compareTo方法。

一种是,传入比较器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

最新文章

  1. Laravel Composer and ServiceProvider
  2. [收集]在iPhone桌面的应用程序图标右上角显示数字
  3. Advanced SQL
  4. 使用 gulp 搭建前端环境入门篇(转载)
  5. Tomcat 长连接与短连接性能测试
  6. 基于AgileEAS.NET企业应用平台实现基于SOA架构的应用整合方案-开篇
  7. Bug解决过程复盘
  8. hdu 2254 奥运
  9. hdu 1258 DFS
  10. C# Best Practices - Specify Clear Method Parameters
  11. jQuery内容过滤选择器与子元素过滤选择器用法实例分析
  12. javascript的ES6学习总结(第二部分)
  13. map-有序 multimap-可重复 unordered_map-无序
  14. sql注入2
  15. AJAX跨域问题以及解决思路(更新中)
  16. linux 关于时间日期date
  17. Asp.Net WebAPI及相关技术介绍(含PPT下载)
  18. postgresSQL主从流复制安装
  19. NOI导刊 2018河南郑州游记
  20. Linux网桥模式配置

热门文章

  1. [Codeforces 226E]Noble Knight&#39;s Path
  2. BZOJ 4044 Virus synthesis (回文自动机+dp)
  3. shell试题
  4. Linux下pyftplib简单的脚本
  5. linux下wps的字体缺失解决方法
  6. STM32 抢占优先级和响应优先级
  7. ArcEngine 一些实现代码
  8. [ES2018] Two ways to write for-await-of
  9. updatefile.sh - Linux下代码更新脚本
  10. uva_644暴力加字典树解法