【问题标题】:NSString value not retainedNSString 值未保留
【发布时间】:2011-08-22 09:01:38
【问题描述】:

我正在尝试将字符串中的数据分配给不同视图控制器中的另一个字符串,但似乎数据没有保留 - 我在 NSLog 中得到一个空响应。我想知道为什么,谢谢..

【问题讨论】:

  • 可能是因为 viewDidLoad 在 'schoolController.courseDetails = @"passing new content"' 行之前触发

标签: objective-c xcode ios4 nsstring


【解决方案1】:

尝试稍微改变一下顺序,如下所示,并使用 retain 而不是复制:

SchoolDetailViewController *schoolController = [[SchoolDetailViewController alloc]initWithNibName:nil bundle:nil];
schoolController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
schoolController.courseDetails = @"passing new content"; 
[self presentModalViewController:schoolController animated:YES];
NSLog(@" %@",schoolController.courseDetails); // 'passing new content' is shown

.h
    NSString *courseDetails;
@property (nonatomic, retain) NSString *courseDetails; 

.m
@synthesize courseDetails; 

- (void)viewDidLoad {

    NSLog(@" text : %@",courseDetails); // returns null ... why? 

    [super viewDidLoad];
}

这应该可行。

【讨论】:

    【解决方案2】:

    那是因为 viewDidLoad 方法在您呈现带有或不带有动画的视图控制器时被调用。

    所以只需翻转这两个语句

    [self presentModalViewController:schoolController animated:YES];
    schoolController.courseDetails = @"passing new content"; 
    

    喜欢这个

    schoolController.courseDetails = @"passing new content"; 
    [self presentModalViewController:schoolController animated:YES];
    

    然后再次检查结果...

    【讨论】:

      猜你喜欢
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多