//
// main.m
// 复制对象的基本概念
//
// Created by on 14-10-19.
// Copyright (c) 2014年 Apple. All rights reserved.
//
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
///////////////////////// 知识点 /////////////////////////
// 最好不要用retainCount调试程序
// 会出现莫名其妙的错误,因为你不知道Cocoa类中将对象retain了几次
// 只要做到释放等于申请的就行
NSMutableArray *array1 = [[NSMutableArray alloc] initWithObjects:@"one", @"two", @"three", @"four", nil];
NSMutableArray *retainArray = [array1 retain];
[array1 removeLastObject];
// 这里的retainArray是arry1 retain出来的,所以array1和retainArray指向同一个内存区
// 删除array1中的最后一个元素对retainArray有影响
for (NSString *string in retainArray) {
NSLog(@"retain: %@", string);
}
[array1 release];
[retainArray release];
NSMutableArray *array2 = [[NSMutableArray alloc] initWithObjects:@"one", @"two", @"three", @"four", nil];
// mutableCopy返回的是可变的对象
// copy返回的是不可变对象
NSMutableArray *copyArray = [array2 mutableCopy];
[copyArray removeLastObject];
// 这里是copy一个新的对象,所以array2和copyArray指向的不是同一块儿区域
// 删除copyArray中的最后一个元素对array2没有影响
for (NSString *string in array2) {
NSLog(@"copy: %@", string);
}
[copyArray release];
[array2 release];
}
return 0;
}
转载于:https://my.oschina.net/are1OfBlog/blog/338248