A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© MacxChina 中级黑马   /  2015-2-5 14:24  /  470 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#import <Foundation/Foundation.h>

/*      
        1.复制对象的基本概念
    复制对象顾名思义,复制一个对象作为副本,它会开辟一块新的内存(堆内存)来存储副本对象,就像复制文件一样。即源对象和副本对象是两块不同的内存区域。
*/
int main(int argc, const char * argv[])
{
   
    @autoreleasepool {
        
        /*__________________________对数组进行retain_____________________________*/
        /*
         NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"one",@"two", nil];
         //retain只是引用计数+1,没有创建新的对象
         //array1与array2指针相同,指向同一个对象
         NSMutableArray *array2 = [array1 retain];
         
         if (array1 == array2) {
         NSLog(@"array1 == array2");
         NSLog(@"array1的引用计数:%ld",array1.retainCount);
         }
         */
        
        /*__________________________对数组进行copy_____________________________*/
        
        /*
         NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"one",@"two", nil];
         [array1 retain];  //引用计数:2
         
         //复制对象,创建一个新的副本对象
         NSArray *array2 = [array1 copy]; //array2计数为:1,因为是新创建出来的对象
         
         if (array1 != array2) {
         NSLog(@"array1 != array2,是两个对象");
         
         NSLog(@"array1的引用计数:%ld",array1.retainCount);
         NSLog(@"array2的引用计数:%ld",array2.retainCount);
         }
         
         [array2 release];
         [array1 release];
         */
        
        /*__________________________copy与mutableCopy的区别_____________________________*/
        
        /*
         copy与 mutableCopy都是复制对象,都能复制一个新的副本对象出来
         copy复制出来的对象,是不可变的对象
         mutableCopy复制出来的对象,是可变的对象
         */
        
        NSMutableArray *array1 = [NSMutableArray arrayWithObjects:@"one",@"two", nil];
        
        //copy复制出来的对象是不可变的
        NSArray *array2 = [array1 copy];
        
        //mutableCopy 复制出来的对象是可变
        NSMutableArray *array3 = [array1 mutableCopy];
        [array3 addObject:@"three"];
        
        NSLog(@"array3=%@",array3);
        
        
        //NSNumber *number = @123;
        //NSNumber没有实现NSMutableCopying协议
        //[number mutableCopy];  //错误
        
    }
    return 0;
}


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马