Foundation框架(6)——NSArray的创建、简单使用、内存管理、给数组中得元素发消息

//
//  main.m
//  Foundation(6)-NSArray
//
//  Created by XinYou on 15-1-19.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import 
  
  
   
   
#import "Student.h"

#pragma mark 创建数组
void arrayCreate(){
    // 创建一个空的数组
    NSArray *array = [NSArray array];
    // 创建有一个元素的数组
    array = [NSArray arrayWithObject:@"123"];
    // 创建有多个元素的数组,"nil"表示数组的结尾,它并不是数组的元素
    array = [NSArray arrayWithObjects:@"abc", @"123", @"hello", nil];
    
    int count = [array count];
    NSLog(@"%i", count);// 3
}

#pragma mark 数组的简单使用
void arrayUse(){

    NSObject *obj = [[NSObject alloc] init];
    NSArray *array = [NSArray arrayWithObjects:@"abc", @"123", @"hello", obj, nil];
    // 判断是否包含了某个元素
    if ([array containsObject:@"abc"]) {
        NSLog(@"array包含了字符串abc");
    }
    // 获取数组的最后一个元素
    NSString *last = [array lastObject];
    NSLog(@"last = %@", last);// last = 
   
   
    
    
    // 获取数组某个位置的元素
    NSString *str = [array objectAtIndex:1];
    NSLog(@"str = %@", str);// str = 123
    // 获取数组中某个元素的索引下标
    int index = [array indexOfObject:@"abc"];
    NSLog(@"index = %i", index);// index = 0

    [obj release];
}

#pragma mark 数组的内存管理
void arrayMemory(){
    // 调用静态方法获取Student对象
    Student *stu1 = [Student student];
    Student *stu2 = [Student student];
    Student *stu3 = [Student student];
    
    NSLog(@"stu1的计数器:%zi", [stu1 retainCount]);// stu1的计数器:1
    // 当把一个对象塞进数组中时,这个对象的计数器会加1,也就是说数组会对这个对象做一次retain操作
    NSArray *array = [[NSArray alloc] initWithObjects:stu1, stu2, stu3, nil];
    
    NSLog(@"stu1的计数器:%zi", [stu1 retainCount]);// stu1的计数器:2
    
    NSLog(@"%zi", [array count]);// [array count] 等效于 array.count
    
    // 数组被销毁时,会对内部的所有元素都做一次release操作
    [array release];
}

#pragma mark 给数组里面的元素发消息
void arrayMessage(){
    Student *stu1 = [Student student];
    Student *stu2 = [Student student];
    Student *stu3 = [Student student];
    
    NSArray *array = [NSArray arrayWithObjects:stu1, stu2, stu3, nil];
    // 让数组中得所有对象都调用test方法
    [array makeObjectsPerformSelector:@selector(test)];
    // 打印结果:
    // 调用了
    
    
     
     的test方法
    // 调用了
     
     
      
      的test方法
    // 调用了
      
      
        的test方法 // 让数组中得所有对象都调用test2:方法,注意这里的冒号 [array makeObjectsPerformSelector:@selector(test2:) withObject:@"hello"]; // 打印结果 // 调用了 
       
         的test2方法,参数str = hello // 调用了 
        
          的test2方法,参数str = hello // 调用了 
         
           的test2方法,参数str = hello } int main(int argc, const char * argv[]) { @autoreleasepool { // arrayCreate(); // arrayUse(); // arrayMemory(); // arrayMessage(); } return 0; } 
          
         
        
      
     
     
    
    
   
   
  
  


//
//  Student.h
//  Foundation(6)-NSArray
//
//  Created by XinYou on 15-1-19.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import 
   
   
    
    

@interface Student : NSObject

+ (id)student;

- (void)test;

- (void)test2:(NSString*)str;

@end

   
   

//
//  Student.m
//  Foundation(6)-NSArray
//
//  Created by XinYou on 15-1-19.
//  Copyright (c) 2015年 vxinyou. All rights reserved.
//

#import "Student.h"

@implementation Student

+ (id)student{

    return [[[Student alloc] init] autorelease];
    
}

- (void)test{

    NSLog(@"调用了%@的test方法", self);
}

- (void)test2:(NSString *)str{

    NSLog(@"调用了%@的test2方法,参数str = %@", self, str);
}

- (void)dealloc{

    NSLog(@"%@被销毁了", self);

    [super dealloc];
}

@end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值