【问题标题】:Setting return value of an Instance method [closed]设置实例方法的返回值
【发布时间】:2012-07-14 10:15:50
【问题描述】:

我知道 Instance 方法在执行完成后可以返回一个值,但我不知道如何设置和获取该值,我知道如何设置参数但如何设置 Method 本身的返回类型?

所以,这就是 Instance 方法的实现:

-(int) returnInteger: (id) anString: (int) anNumber{

设置它的参数:

 [self returnInteger: (id) returnNSString: (int) 100]; 

但是我如何设置“returnInteger 本身”的值我想知道如何在它的实现中以及当我调用它时(当它执行时)设置 i。

还有一个问题

如果我在方法中将它的第一个参数设置为 100,当我调用它时我想向它添加 100,我该怎么做?我试过这个 - 但没有用

[self returnInteger: (id) returnNSString: (int) + 100]; 

【问题讨论】:

  • 这没什么意义;它似乎是建立在对方法如何工作的误解之上。要从方法中获取值,请调用它,传递参数,并在其主体中包含 return 语句。 “方法本身的价值”和“在其实现中以及我调用它时都设置它”是没有意义的,并且声明和调用并没有像你认为的那样做。也许如果您详细说明您要完成的工作,我们会更有帮助。
  • 好吧.. 因为声明本身的返回类型是 (int) 而不是 (void) 它应该能够在执行完成时返回一个整数 - 我没有任何“计划”我我只是想知道为什么我没有在我关于 obj c 的任何书籍中看到这一点
  • 或者至少指定返回类型为整数的方法的名称,就像我在传递参数参数时所做的那样。将像 int 这样的数据类型分配给实例方法返回类型还有什么意义?

标签: objective-c methods return instance


【解决方案1】:

我仍然不确定你在问什么,但这里有一个示例可能会有所帮助。

@interface Juniper : NSObject
// Return type int, first parameter type NSString * and named s,
// second parameter type int and named i. Method's name is
// addNumberInString:toInt:
- (int)addIntInString: (NSString *)s toInt: (int)i;
@end

@implementation Juniper

- (int)addIntInString: (NSString *)s toInt: (int)i
{
    // Extract int from argument named s
    int intFromString = [s intValue];
    // Add that int to argument named i and end 
    // method, returning the result of addition
    return intFromString + i;
}

@end



int main(int argc, const char * argv[])
{

    @autoreleasepool {

        Juniper * j = [[Juniper alloc] init];
        // Execute the method, store the return value
        int result = [j addIntInString:@"100" toInt:15];
        // Display the return value so we know it worked.
        NSLog(@"%d", result);

    }
    return 0;
}

【讨论】:

    猜你喜欢
    • 2013-09-23
    • 2015-12-14
    • 2015-05-21
    • 1970-01-01
    • 2016-08-30
    • 2015-05-23
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多