Ios NSMutableArray共享实例始终只返回最后一个对象

Ios NSMutableArray共享实例始终只返回最后一个对象,ios,objective-c,for-loop,nsmutablearray,nsobject,Ios,Objective C,For Loop,Nsmutablearray,Nsobject,我对NSMutablearray addobject感到困惑,我尝试使共享实例NSMutablearray如下: 1.共享实例 + (netra*)someInstance { if (sharedObject == nil) { sharedObject = [[super allocWithZone:NULL] init]; } return sharedObject; } 1.1插入方法 +(void) setStock:(NSInteger *)

我对NSMutablearray addobject感到困惑,我尝试使共享实例NSMutablearray如下:

1.共享实例

+ (netra*)someInstance
{
    if (sharedObject == nil) {
        sharedObject = [[super allocWithZone:NULL] init];
    }
    return sharedObject;
}
1.1插入方法

+(void) setStock:(NSInteger *)stock{
    // Ensure we are using the shared instance
    netra *shared = [netra sharedInstance];
    [shared.stockInits addObject:stock];

}
-(void) some{
for(int x=0;x<=1000;x++){
    [netra setStock:i];
 }
}
1.3调用nsmutablearray的方法

+(NSMutableArray *) getStock{
    // Ensure we are using the shared instance
    netra *shared = [netra sharedInstance];
     return shared.stockInits ;
}
2.插入方法

+(void) setStock:(NSInteger *)stock{
    // Ensure we are using the shared instance
    netra *shared = [netra sharedInstance];
    [shared.stockInits addObject:stock];

}
-(void) some{
for(int x=0;x<=1000;x++){
    [netra setStock:i];
 }
}
-(无效)一些{

对于(intx=0;x首先,我将创建一个getInstance方法,如下所示:

@implementation SinglentonObject{
    NSMutableArray *array;
}

+ (id)getInstance {
    static SinglentonObject *instance = nil;
    @synchronized(self) {
        if (instance == nil) {
            instance = [[SinglentonObject alloc] init];
        }
        return instance;
    }
}

-(void) setStock:(NSNumber *)stock{
    // Ensure we are using the shared instance
    if(!array){
        array = [@[] mutableCopy];
    }
    [array addObject:stock];

}

- (NSMutableArray *) getStockArray
{
    return stockArray;
}
用某种方法,你必须用x来改变i:

-(void) write
{
    for(int x=0;x<=1000;x++){
       [[SinglentonObject getInstance] setStock:@x];
    }
}

请记住将getInstance的每个方法修改为类方法。我建议您阅读一些Singlenton模式的文章,如。

hmmm回答得很好,但为什么我不能从其他类迭代nsmutablearray..如果我计算它,它返回正确的长度..那么它已经插入到nsmutablearray了吗?但为什么只显示最后一条记录ing?是nsmutable数组在我调用setStock时重置了内容?还是其他原因?我不太确定是哪段代码引起了这种奇怪的行为,因为有一些候选代码。我将编辑答案以改进它。嗯,谢谢!但它仍然给我带来了很大的神秘;)如果数据不是nsnumber呢?如果数据是nsdictionary呢?我想将其绘制到tableview中?