2013-03-07 63 views
0

我有一个NSString在.h文件中声明。然后我在ViewDidload内分配一个值。在我的didSelectRowatIndex事件中想要将该值赋给先前ViewController中的另一个字符串。无法访问viewdidload之外的NSString

.H

`

NSString *strWifiId; 

NSArray *arrstrWifiId;` 

`
- (无效)viewDidLoad中 {

 arrstrWifiId=[arrWorkflow valueForKey:@"WFID"]; 

     strWifiId=[NSString stringWithFormat:@"%@",[arrstrWifiId objectAtIndex:0] ]; 
} 

`

`

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

NSArray *array = [self.navigationController viewControllers]; 

NSLog(@"navi array count ----- %d",[array count]); 


UITableViewCell *selectedCell=[tableView cellForRowAtIndexPath:indexPath]; 




for (UIViewController* viewController in self.navigationController.viewControllers) { 


    if ([viewController isKindOfClass:[SendTimeChangeRequestViewController class]]) { 


     SendTimeChangeRequestViewController *groupViewController = (SendTimeChangeRequestViewController*)viewController; 


     [groupViewController.btnwrkflwFirstApprove setTitle:selectedCell.textLabel.text forState:UIControlStateNormal]; 


     groupViewController.pWorkFlowID=strWifiId; 

     NSLog(@"WFID---- %@",groupViewController.pWorkFlowID); 
     //NSLog(@"CELL TAG----- %@",groupViewController.pAuthEmployeeCode); 


     [self.navigationController popToViewController:groupViewController animated:YES]; 
    } 
} 

`

这里NSLog打印一些垃圾值。为什么是这个?我该如何解决这个问题?

感谢

回答

0

您拥有该对象从initWithFormat您是负责释放返回,但你没有自己的对象从stringWithFormat它返回一个字符串,自动释放,因此不需要将其释放回(如果你确实想拥有它,你必须保留它)。

所以解决您的问题,尝试分配你的价值就是这样,

- (void)viewDidLoad { 

     arrstrWifiId=[arrWorkflow valueForKey:@"WFID"]; 

     strWifiId=[[NSString alloc] initWithFormat:@"%@",[arrstrWifiId objectAtIndex:0] ]; 
}