Objective c 自定义委托方法触发正常,但值不会在其他方法中保持不变

Objective c 自定义委托方法触发正常,但值不会在其他方法中保持不变,objective-c,ios5,delegates,persistence,modalviewcontroller,Objective C,Ios5,Delegates,Persistence,Modalviewcontroller,我是objective-c的新手。我正在用模态视图做一个应用程序,它将数据传递给他的父视图。我实现了一个协议委托,数据的传递是正常的,但它不会在其他方法中持久化,因为当我尝试使用传递的值执行某些操作时,在我的委托方法之外似乎是空的。我在delegate方法中执行NSLog,并且该值在那里,但是当我想在另一个方法中使用该值时,它似乎被遗漏了。我没有用弧 我的主ViewController.h: @protocol ModalViewDelegate - (void)didReceiveWeight

我是objective-c的新手。我正在用模态视图做一个应用程序,它将数据传递给他的父视图。我实现了一个协议委托,数据的传递是正常的,但它不会在其他方法中持久化,因为当我尝试使用传递的值执行某些操作时,在我的委托方法之外似乎是空的。我在delegate方法中执行NSLog,并且该值在那里,但是当我想在另一个方法中使用该值时,它似乎被遗漏了。我没有用弧

我的主ViewController.h:

@protocol ModalViewDelegate
- (void)didReceiveWeight:(NSString *)weight andUnit:(NSString *) unit;
@end

@interface LogWeightTableViewController : UITableViewController<ModalViewDelegate> {
NSNumber *weightPassed;
}

@property (nonatomic, retain) IBOutlet UILabel *WeightSelected;
//...
我的ModalView.h:

@property (nonatomic, assign) id<ModalViewDelegate> delegate;
返回我的MainViewController。我想用我的_做点什么:

- (IBAction)saveLogToDataBase:(id)sender {
// ... do some stuff
[row setKg: _weightPassed]; //<-- here _weightPassed is null
-(iAction)saveLogToDataBase:(id)发送方{
//…做点什么

[row setKg:_weightPassed];//根据H2CO3的建议,我已更改了设计模式,现在在显示模式视图之前传递了委托。我使用prepareForSegue方法完成了此操作:

 - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([[segue identifier] isEqualToString:@"modalSegue"]) {
        ModalView *pickerView = [segue destinationViewController]; 
        pickerView.delegate = self; 
    }
}

那么现在您使用的是datePassed还是weightPassed?很抱歉,我现在编辑了代码,它是weightPassed。也许可以使用
\uWeightPassed=[[f numberFromString:weight]retain]
?我尝试了
\uWeightPassed=[[f numberFromString:weight]retain]
但仍然是相同的结果,我现在明白了!每次启动委托方法时,您都在重新创建LogWeightVC…这不好,您需要稍微更改一下设计模式。
- (IBAction)saveLogToDataBase:(id)sender {
// ... do some stuff
[row setKg: _weightPassed]; //<-- here _weightPassed is null
 - (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([[segue identifier] isEqualToString:@"modalSegue"]) {
        ModalView *pickerView = [segue destinationViewController]; 
        pickerView.delegate = self; 
    }
}