0

我是 Objective C 的新手,我很难理解一些事情。

我正在尝试制作一个大整数程序,从中读取输入字符串的项目并将它们放入数组中的单个元素中。

我目前正在研究一种 add 方法,该方法将两个数组中的元素添加在一起,以使一个大数字存储在最终数组中。

但是对于将我从 initWithString 方法制作的这个数组放入数组方法中,我感到有点困惑。我对自我有一些了解,但我真的不知道如何在这个意义上使用它。

    @implementation MPInteger

    {    
    }

    -(id) initWithString: (NSString *) x
    {
        self = [super init];
        if (self) {
        NSMutableArray *intString = [NSMutableArray array];
        for (int i = 0; i < [x length]; i++) {
            NSString *ch = [x substringWithRange:NSMakeRange(i, 1)];
            [intString addObject:ch];
        }
        }
        return self;
    }

    -(NSString *) description
    {
        return self.description;
    }


-(MPInteger *) add: (MPInteger *) x
{
    //NSMutableArray *arr1 = [NSMutableArray arrayWithCapacity:100];
    //NSMutableArray *arr2 = [NSMutableArray arrayWithCapacity:100];
    //for (int i=0; i < 100; i++) {
        //int r = arc4random_uniform(1000);
        //NSNumber *n = [NSNumber numberWithInteger:r];
        //[arr1 addObject:n];
        //[arr2 addObject:n];

   // }

    self.array = [NSMutableArray initialize];




    return x;


}

@end



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

    @autoreleasepool {
        MPInteger *x = [[MPInteger alloc] initWithString:@"123456789"];
        MPInteger *y = [[MPInteger alloc] initWithString:@"123456789"];

        [x add: y];

    }
}

所以我也想添加 x 和 y 数组,但我不确定如何在 add 方法中获取数组。我是否使用 self 来表示其中一个数组并对其进行初始化,并使用 x 来表示另一个。我不知道我是否会以完全错误的方式去做。一些帮助理解将不胜感激。

4

1 回答 1

0

当引用self时,您实际上是在访问该类的当前实例。在其他语言中,这可以改为这样实现。有几种方法可以设计您要使用的方法,但最简单的模式可能是组合:

@interface MPInteger
{
  NSMutableArray *digits;
}

@end

---------------------------------------------------------------------------- 

@implementation MPInteger

-(id) initWithString: (NSString *) x
{
    // Create a new instance of this class (MPInteger) with a default
    // constructor and assign it to the current instance (self).
    self = [super init];
    if (self) {

    // Previously we initialized a string, but then threw it out!
    // Instead, let's save it to our string representation:
    self->digits = [NSMutableArray array];
    for (int i = 0; i < [x length]; i++) {
        NSString *ch = [x substringWithRange:NSMakeRange(i, 1)];
        [self->digits addObject:ch];
    }
    return self;
}

// Depending on how you want to implement this function, it could return
// a new MPInteger class or update the current instance (self):
-(MPInteger *) add: (MPInteger *) x
{
    NSArray *a = self->digits;
    NSArray *b = x->digits;

    // Have both strings for A + B, so use them to find C:
    NSArray *c = ????;

    // Return a new instance of MPInteger with the result:
    return [ [ MPInteger alloc ] initWithString:c ];
}

@end

请注意,现在 MPInteger 类有一个 NSString 对象的实例,该对象将存在于 MPInteger 对象的整个生命周期中。要更新/访问此字符串,您只需说:

self->digits
于 2013-08-28T03:38:13.227 回答