如果我的主文件中有以下内容
int main ( int argc, const char * argv[])
{
@autoreleasepool
{
Complex * c1 = [[Complex alloc] init];
Complex * c2 = [[Complex alloc] init];
Complex * compResult;
compResult = [c1 add: c2];
[compResult print];
{
return0;
{
/**implementation of add method **/
-(Complex *) add: (Complex *) f
{
Complex *result = [[Complex alloc] init]
result.real = real + f.real;
result.imaginary = imaginary + f.imaginary;
return result;
}
我知道 c1 和 c2 是对象,但是 compResult 被认为是一个变量,直到我们执行 compResult = [c1 add: c2];
我在这里的假设是 add 方法返回一个 Object 并通过执行 compResult = [c1 add: c2]; 我们将 compResult 设置为等于该对象。那么这会将 compResult 变成一个对象吗?
所以在我看来compResult是一个接收[c1 add: c2]结果的变量,但是当我们做[compResult print]时,我真的很困惑,因为我认为你只能在发送消息时使用这种语法(在这个案例打印)到一个对象?
我想我的主要问题是我们做了 compResult = [c1 add: c2]; 变量 compResult 是持有/代表一个对象还是它实际上成为对象????