繁体   English   中英

数组经过自己的方法后会丢失所有值-目标C

[英]Array loses all values after go trough its own method - Objective C

我下面有这段代码,我试图将Objects(String elements)添加到数组中,问题是每次我退出添加方法时,它都变为nil,它不会保留对象。

我知道我做错了,即使我已经尝试了很多组合和变化,甚至使用我自己的构造函数_MyArray等,也能得到相同的结果。

请问你能帮帮我吗?

@interface ArraysModel()
@property (nonatomic, retain) NSMutableArray *MyArray;
@end

@implementation ArraysModel
@synthesize MyArray;

-(void)AddObjectToTheList:(NSString *)object {

    if(!MyArray) MyArray = [[NSMutableArray alloc] init];
    [MyArray addObject:object];
    NSLog(@"%@",self.MyArray);
    NSLog(@"Object added %u",[self.MyArray count]);
}
-(NSMutableArray *)ObjectList {

    return self.MyArray;
    NSLog(@"%@",self.MyArray);
    NSLog(@"Object added %u",[self.MyArray count]);
}

@end

标头是这样的:

@interface ArraysModel : NSObject

-(void)AddObjectToTheList:(NSString *)object;

这是我的ViewController发出的呼叫:

- (IBAction)AddToTheList {

    ArraysModel *MyObjectToAdd = [[ArraysModel alloc] init];
    [MyObjectToAdd AddObjectToTheList:TextArea.text];
    [self.view endEditing:YES];

好吧,这是您的问题-您正在分配init的是ArraysModel的新实例,因此每次调用都会分配一个新的数组。 您需要创建一个对实例的强引用,并检查它是否退出,只有在没有退出时才进行初始化。

在.h中:

@property (strong, nonatomic) ArraysModel *myObjectToAdd;

在他们中:

-(IBAction)AddToTheList {
    if (! self.myObjectToAdd) { 
        self.myObjectToAdd = [[ArraysModel alloc] init];
    } 
   [self.myObjectToAdd AddObjectToTheList:TextArea.text]; 
   [self.view endEditing:YES]
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM