我仍然无法理解在方法中返回对象是什么意思。它的价值意味着什么?
如果我有这样的话:
-(ClassName *) methodName: (int) arg {
return arg;
}
我无法理解如何通过上述方法返回对象。如果有人可以帮助我理解。
感谢。
答案 0 :(得分:2)
您将通过返回一个对象来返回一个对象。例如,您可以忽略参数:
- (ClassName *)methodName:(int)arg {
return [[[ClassName alloc] init] autorelease];
}
您可以将int转换为对象:
- (NSNumber *)methodName:(int)arg {
return [NSNumber numberWithInt:arg];
}
您可以在某些计算中使用该参数来确定返回的对象的某些属性。您可以处理参数并返回指示计算状态的对象。等等等等。从方法中返回对象的方法实际上是无限的。它需要的是创建或访问某些对象然后返回。
答案 1 :(得分:1)
上面的方法返回一个指向arg的指针,类型为ClassName *。
我假设解释这个问题会假设有关如何调用函数的基本知识,如何在函数调用之前将传递的值推送到堆栈以及如何从函数返回返回值。
在这种特定情况下,您的arg
变量是类的一部分,这意味着它存储在作为对象一部分的内存中。当您返回指向它的指针时,您指向对象内的特定内存区域。
另一种选择是返回值的副本。这意味着复制并返回它。
不同之处在于,如果返回指向对象内部变量的指针,则可以从外部修改对象状态。
如果您返回副本,则可以修改副本并且原始对象不会更改。
不确定这是否有帮助,但您要问的是非常基本的软件开发主题,该主题假定有一些背景知识。
也许指明一下你究竟在寻找什么?
答案 2 :(得分:0)
想想像数学中的函数一样的方法。在数学中,sin(180)
等于0
。 sin
是方法,180
是参数,0
是方法的返回值。 objective-c中的一个例子可能是这样的:
-(double) sin:(double)angleInDegrees;
{
double sinValue;
//calculate the return value here and store it in sinValue.
//for example, if angleInDegrees is 180, then set sinValue to 0
return sinValue;
}
返回对象完全相同。看看这个例子:
-(NSString*) sayHelloTo:(NSString*)name;
{
return [NSString stringWithFormat:@"Hello %@!", name];
}
如果我把它写成数学函数,那么sayHelloTo(@"Tom")
等于@"Hello Tom!"
。唯一的区别是@"Hello Tom!"
是NSString
个对象,而不是double
。