-1

我以为我对物体有很好的理解,但我想不是。当两个对象同名时会发生什么?它们都指向内存中的相同位置?因此,如果我有一堂课说:

SomeClass *someObject = [SomeClass new];
someObject.text = @"test";

另一个类用相同的名称实例化相同的对象:

SomeClass *someObject = [SomeClass new];
someObject.textColor = [UIColor redColor];

这会将同一对象修改为显示“测试”的红色文本,对吗?

谢谢!~地毯嘶嘶声

4

3 回答 3

3

不,这两个指针指向内存中的两个不同对象。他们是否有相同的名字并不重要。它们在两个不同的类中分别分配和初始化。

顺便说一句,您永远不应该使用新方法来分配和初始化对象。不鼓励使用新消息,因为分配和初始化是两个不同的过程。你应该改用这个:

SomeClass *someObject = [[SomeClass alloc] init];
于 2013-06-01T15:16:32.910 回答
2

没有。仅仅因为两个变量碰巧共享相同的名称并不意味着它们共享相同的内存位置。编译时,编译器会去除变量名(但不包括类名)并计算内存偏移量和消息而不是名称和类。此外,作为局部变量,一旦它们超出范围 - 很可能在创建它们的每个函数的末尾 - 它们将立即被销毁。

于 2013-06-01T15:15:05.307 回答
0

不,你不能那样做。

任何现代编译器都会在编译该代码之前试图扼杀你 - 正是因为这个原因:它不知道该怎么做!

即使您可以让编译器使其工作,仅仅因为两个对象具有相同的名称并不意味着它们具有相同的内存地址。

于 2013-06-01T15:15:52.137 回答