我以为我对物体有了不错的理解,但我猜不是。当两个对象名称相同时会发生什么?他们都指向内存中的相同位置?所以如果我有一个课说:
SomeClass *someObject = [SomeClass new];
someObject.text = @"test";
另一个类使用相同的名称实例化同一个对象:
SomeClass *someObject = [SomeClass new];
someObject.textColor = [UIColor redColor];
这会将同一个对象修改为一个红色文本,说“测试”对吗?
谢谢! 〜Carpetfizz
答案 0 :(得分:3)
不,这两个指针指向内存中的两个不同对象。它们是否具有相同的名称并不重要。它们分别在两个不同的类别中进行分配和初始化。
顺便说一句,你永远不应该使用新方法来分配和初始化对象。不鼓励使用新消息,因为分配和初始化是两个不同的过程。你应该改用它:
SomeClass *someObject = [[SomeClass alloc] init];
答案 1 :(得分:2)
不。仅仅因为两个变量碰巧共享相同的名称并不意味着它们共享相同的内存位置。编译时,编译器会删除变量名(但不会删除类名)并计算内存偏移量和消息,而不是名称和类。此外,作为局部变量,一旦它们超出范围 - 最有可能在创建它们的每个函数的末尾 - 它们将立即被销毁。
答案 2 :(得分:0)
任何现代编译器都会在编译代码之前试图扼杀你 - 原因如下:它不知道该怎么做!
即使可以让编译器使其工作,只是因为这两个对象具有相同的名称并不意味着它们具有相同的内存地址。