【OC】数组相关

#import <Foundation/Foundation.h>
#import "AV.h"

#pragma mark 数组声明
void arrayTest(){
    // 创建一个空数组
    NSArray *arr1 = [NSArray array];
   
    // 创建有一个元素的数组
    NSArray *arr2 = [NSArray arrayWithObject:@"hello"];
   
    // 创建有多个元素的数组
    NSArray *arr3 = [NSArray arrayWithObjects:@"hello", @"world", nil];
   
    // 查看元素个数
    NSUInteger num = [arr3 count];
    NSLog(@"%lu", num);
   
}

#pragma mark 数组的使用
void arrayUse(){
    NSArray *arr = [NSArray arrayWithObjects:@"苍井空", @"饭岛爱", @"小泽玛利亚", nil];
   
    // 数组中的最后一个元素
    NSLog(@"数组中的最后一个元素是:%@", [arr lastObject]);
   
    // 获取元素在数组中的位置,从0开始索引
    NSString *str1 = @"饭岛爱";
    NSLog(@"饭岛爱所在的位置是:%lu", [arr indexOfObject:str1]);
   
    // 在指定范围内查找元素,返回元素的位置
    NSString *str3 = @"苍井空";
    NSRange range = {0, 2};
    NSLog(@"%@在指定范围内的是否存在%lu", str3, [arr indexOfObject:str3 inRange:range]);
   
    // 查看数组中是否包含了某个元素
    NSString *str2 = @"苍井空";
    if([arr containsObject:str2]){
        NSLog(@"数组包含了元素:%@", str2);
    }
   
    // 让数组中的所有对象都执行某个方法
    AV *a1 = [[AV alloc] initWithName:@"苍井空"];
    AV *a2 = [[AV alloc] initWithName:@"武藤兰"];
    AV *a3 = [[AV alloc] initWithName:@"饭岛爱"];
    NSArray *list = [NSArray arrayWithObjects:a1, a2, a3, nil];
    [list makeObjectsPerformSelector:@selector(yamiedie)];//数组中的对象分别调用了yamiedie这个方法,不带参数
    [list makeObjectsPerformSelector:@selector(eat:) withObject:@"二两韭菜包子"];//带参数,且只支持一个参数
}

#pragma mark 遍历数组
void arrayLoop(){
    NSArray *list = [NSArray arrayWithObjects:@"Swift", @"PHP", @"JavaScript", @"Python", nil];
    // for循环遍历
    NSUInteger num = [list count];
    for (int i = 0; i<num; i++) {
        id obj = [list objectAtIndex:i];
        NSLog(@"for循环:%i->%@", i, obj);
    }
   
    // for in循环
    for (id obj in list) {
        NSLog(@"forin循环:%@", obj);
    }
   
    // block遍历 推荐
    [list enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"block遍历:%lu->%@", idx, obj);
    }];
   
    // 迭代器遍历
    NSEnumerator *loop = [list objectEnumerator];
    NSEnumerator *loop2 = [list reverseObjectEnumerator];// 反向的迭代器
    id obj = nil;
    while (obj = [loop2 nextObject]) {
        NSLog(@"迭代器遍历:%@", obj);
    }
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        arrayTest();
        arrayUse();
        arrayLoop();
    }
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值