Objective-C = operator vs stringWithString / arrayWithArray
发布时间:2020-12-16 09:50:38 所属栏目:百科 来源:网络整理
导读:我是obj-c开发的新手,但部分具有C开发的背景.这可能是一个菜鸟问题,但我无法在其他地方得到确切的答案.这些数组和字符串的片段以及可能的其他类型的对象之间有什么区别: NSArray *original = [NSArray arrayWithObjects:someObjects,nil];//Case 1NSArray *
我是obj-c开发的新手,但部分具有C开发的背景.这可能是一个菜鸟问题,但我无法在其他地方得到确切的答案.这些数组和字符串的片段以及可能的其他类型的对象之间有什么区别:
NSArray *original = [NSArray arrayWithObjects:someObjects,nil]; //Case 1 NSArray *copy1 = original; //Case 2 NSArray *copy2 = [NSArray arrayWithArray:original]; 并为字符串 NSString *original = @"aString"; //Case 1 NSString *copy1 = original; //Case 2 NSString *copy2 = [NSString stringWithString:original]; 如果我稍后对copy1和copy2进行更改,它们会反映在原始对象上吗?并且相同的规则是否适用于其他对象类型? 解决方法
你的问题实际上是关于指针指向的对象.当你说稍后对copy1和copy2进行更改时,我猜你的意思是指针内容,而不是指针引用的对象.这是一种相当实用的思考方式,但它非常重要.
在您的示例中,数组/字符串部分无关紧要,因为您没有对对象执行任何操作,您只是使用指向这些对象的指针. 原始指向一个对象. copy1指向同一个对象. copy2指向另一个对象(但在这种情况下,它是第一个对象的副本). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |