IOS學(xué)習(xí)筆記十九NSArray和NSMutableArray

1、NSArray

NSArray不可變集合,不能添加新元素和刪除已有元素和替換元素

2、demo

Dog.h

    #import <Foundation/Foundation.h>
    #ifndef Dog_h
    #define Dog_h
     
    @interface Dog : NSObject
    @property (nonatomic, strong) NSString *name;
    @property (nonatomic, assign) int age;
    -(id)initWithName:(NSString *)name age:(int)age;
    -(void)say:(NSString *)content;
    @end
    #endif /* Dog_h */


Dog.m


    #import <Foundation/Foundation.h>
    #import "Dog.h"
     
    @implementation Dog
    @synthesize name;
    @synthesize age;
    -(id)initWithName:(NSString *)name age:(int)age
    {
        if (self = [super init])
        {
            self.name = name;
            self.age = age;
        }
        return self;
    }
     
    -(void)say:(NSString *)content
    {
        NSLog(@"%@ say %@", name, content);
    }
     
    -(BOOL)isEqual:(id)object
    {
        if (object == self)
            return YES;
        if ([object class] == Dog.class)
        {
            Dog *dog = (Dog *)object;
            return [self.name isEqualToString:dog.name] && (self.age == dog.age);
        }
        return NO;
    }
    @end


main.m

    int main(int argc, char * argv[]) {
        @autoreleasepool {
            NSArray *array = [NSArray arrayWithObjects:@"chenyu", @"hello", @"word", @"god", nil];
            NSLog(@"first data id %@", [array objectAtIndex:0]);
            NSLog(@"first data id %@", [array objectAtIndex:1]);
            NSLog(@"first data id %@", [array lastObject]);
            
            NSLog(@"@hello is %ld", [array indexOfObject:@"hello"]);
            
            array = [array arrayByAddingObject:@"chenzixuan"];
            
            for (int i = 0; i < array.count; ++i)
            {
                NSLog(@"%@", [array objectAtIndex:i]);
            }
            
            NSArray *arr = [NSArray arrayWithObjects:[[Dog alloc] initWithName:@"chen" age:1], [[Dog alloc] initWithName:@"chenyu" age:1], [[Dog alloc] initWithName:@"chengongyu" age:1], nil];
            
            
            Dog *d = [[Dog alloc] initWithName:@"chenyu" age:1];
            NSInteger pos = [arr indexOfObject:d];
            NSLog(@"index is %ld", pos);
            
            [arr makeObjectsPerformSelector:@selector(say:) withObject:@"拜拜"];
            
            NSString *str = @"hello";
            
            [array enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
                NSLog(@"正在處理第%ld個(gè)元素:%@", idx, obj);
            }];
        }
    }

 
3、結(jié)果

    2018-07-15 21:17:44.447732+0800 cyTest[31047:9530812] first data id chenyu
    2018-07-15 21:17:44.449642+0800 cyTest[31047:9530812] first data id hello
    2018-07-15 21:17:44.450020+0800 cyTest[31047:9530812] first data id god
    2018-07-15 21:17:44.450943+0800 cyTest[31047:9530812] @hello is 1
    2018-07-15 21:17:44.451207+0800 cyTest[31047:9530812] chenyu
    2018-07-15 21:17:44.451493+0800 cyTest[31047:9530812] hello
    2018-07-15 21:17:44.451739+0800 cyTest[31047:9530812] word
    2018-07-15 21:17:44.451986+0800 cyTest[31047:9530812] god
    2018-07-15 21:17:44.452233+0800 cyTest[31047:9530812] chenzixuan
    2018-07-15 21:17:44.453020+0800 cyTest[31047:9530812] index is 1
    2018-07-15 21:17:44.453332+0800 cyTest[31047:9530812] chen say 拜拜
    2018-07-15 21:17:44.453581+0800 cyTest[31047:9530812] chenyu say 拜拜
    2018-07-15 21:17:44.453803+0800 cyTest[31047:9530812] chengongyu say 拜拜
    2018-07-15 21:17:44.454188+0800 cyTest[31047:9530812] 正在處理第0個(gè)元素:chenyu
    2018-07-15 21:17:44.454456+0800 cyTest[31047:9530812] 正在處理第1個(gè)元素:hello
    2018-07-15 21:17:44.455253+0800 cyTest[31047:9530812] 正在處理第2個(gè)元素:word
    2018-07-15 21:17:44.478747+0800 cyTest[31047:9530812] 正在處理第3個(gè)元素:god
    2018-07-15 21:17:44.478861+0800 cyTest[31047:9530812] 正在處理第4個(gè)元素:chenzixuan

 
4、NSMutableArray

nsMutableArray可變數(shù)組,代表是一個(gè)集合元素可變的集合

一般有add開頭、 remove開頭、replace開頭、sort開頭的方法

5、測(cè)試Demo

            NSMutableArray *muArray = [NSMutableArray arrayWithObjects:@"chen", @"yu", @"hello", @"word", nil];
            [muArray addObject:@"123"];
            [muArray removeObject:@"yu"];
            [muArray replaceObjectAtIndex:1 withObject:@"xx"];
            for (id ob in muArray) {
                NSLog(@"ob is %@", ob);
            }

 
6、結(jié)果

    2018-07-18 22:02:57.498997+0800 cyTest[31429:12701122] ob is chen
    2018-07-18 22:02:57.600036+0800 cyTest[31429:12701122] ob is xx
    2018-07-18 22:02:57.600599+0800 cyTest[31429:12701122] ob is word
    2018-07-18 22:02:57.600824+0800 cyTest[31429:12701122] ob is 123





 


作者:chen.yu
深信服三年半工作經(jīng)驗(yàn),目前就職游戲廠商,希望能和大家交流和學(xué)習(xí),
微信公眾號(hào):編程入門到禿頭 或掃描下面二維碼
零基礎(chǔ)入門進(jìn)階人工智能(鏈接)