Iphone 理解Objective-C与指针的测试
我编写了一个测试代码来理解目标C和C指针。这是密码 例如: 输出: str是我的 str是名字 str是 我是鲍勃 尽管我删除了索引为零的对象,但所有4个对象都在新数组中正确显示,所以它不仅指向并拥有自己的对象,对吗?还是一个悬空的指针Iphone 理解Objective-C与指针的测试,iphone,ios,objective-c,Iphone,Ios,Objective C,我编写了一个测试代码来理解目标C和C指针。这是密码 例如: 输出: str是我的 str是名字 str是 我是鲍勃 尽管我删除了索引为零的对象,但所有4个对象都在新数组中正确显示,所以它不仅指向并拥有自己的对象,对吗?还是一个悬空的指针 thanx将对象插入Cocoa集合时,对象通常不会被复制,只会被保留。(也就是说,是的,只有指针用于引用对象。)想象一下,如果你有两个知道你地址的邮差,如果去掉其中一个,另一个仍然知道你住在哪里 您实际上并没有删除对象,只是对对象的引用。H2CO3是正确的,ob
thanx将对象插入Cocoa集合时,对象通常不会被复制,只会被保留。(也就是说,是的,只有指针用于引用对象。)想象一下,如果你有两个知道你地址的邮差,如果去掉其中一个,另一个仍然知道你住在哪里
您实际上并没有删除对象,只是对对象的引用。H2CO3是正确的,obj-c使用引用计数,这是一种智能内存管理方式。数组和sec_mut都保留自己对真实对象的引用,但不是复制的对象。您可以阅读有关引用计数技术的详细信息。从数组中删除指针也不会释放c中指向的内存。
NSMutableArray *array = [[NSMutableArray alloc] init];
NSMutableArray *sec_mut;
if (array) {
[array addObject:@"My"];
[array addObject:@"name"];
[array addObject:@"is"];
[array addObject:@"BoB"];
sec_mut = [[NSMutableArray alloc] init];
if (sec_mut) {
for (id obj in array) { // Is it allocating new object and adding or only points to already existing memory (just adding address)?
[sec_mut addObject:obj];
}
}
}
[array removeObjectAtIndex:0];
for (id obj in sec_mut) {
NSLog(@"str is %@\n",obj);
}