block与方法 排序各个国家的名称

  • 什么时候block需要作为方法的参数.

    • 在方法的内部实现功能的时候.如果在实现某个子功能的时候.如果不确定到底如何实现.
    • 只有调用者清楚. 那就让调用者写1段代码实现这个功能 把这个代码通过block参数传递进来.
  • block可以作为函数、方法的返回值


  • . block与函数的异同

    • . 相同点: 都可以封装1段代码在其中.

    • . 不同点:

      • . block是1个数据类型. 而函数就是函数.

      • . block可以作为函数的参数传递。而函数不能直接作为参数传递.

      • . block可以嵌套.函数不能嵌套定义.


ZYArray.h

#import <Foundation/Foundation.h>
typedef BOOL (^SortArray)(char *countries1,char *countries2);
@interface ZYArray : NSObject
- (void)sortWithArray:(char *[])array andLength:(int)length andBlcok:(SortArray)sortArray;
@end

ZYArray.m

#import "ZYArray.h"

@implementation ZYArray
- (void)sortWithArray:(char *[])array andLength:(int)length andBlcok:(SortArray)sortArray
{
    for (int i = 0 ; i<length - 1; i++)
    {
        for (int j = 0  ; j<length - i -1; j++)
        {
           BOOL res = sortArray(array[j],array[j+1]);
            if (res >0)
            {
                char *temp = array[j];
                array[j] = array[j+1];
                array[j+1] = temp;
            }
        }
    }

    for (int i = 0 ; i<length ; i++)
    {
        NSLog(@"%s",array[i]);
    }
}
@end

main.m

#import <Foundation/Foundation.h>
#import "ZYArray.h"
int main(int argc, const char * argv[])
{
    char *countries[] =
    {
        "Nepal",
        "Cambodia",
        "Afghanistan",
        "China",
        "Singapore",
        "Bangladesh",
        "India",
        "Maldives",
        "South Korea",
        "Bhutan",
        "Japan",
        "Sikkim",
        "Sri Lanka",
        "Burma",
        "North Korea",
        "Laos",
        "Malaysia",
        "Indonesia",
        "Turkey",
        "Mongolia",
        "Pakistan",
        "Philippines",
        "Vietnam",
        "Palestine"
    };
    int length = sizeof(countries)/sizeof(countries[0]);

    ZYArray *array = [[ZYArray alloc]init];
    [array sortWithArray:countries andLength:length andBlcok:^BOOL(char *countries1, char *countries2) {
       return  strcmp(countries1, countries2);
    }];

    return 0;
}

这里是按照首字母排序 当然还可以按照别的方式进行排序 看各位的需求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值