Ios 无法将NSString传递给DetailViewController

Ios 无法将NSString传递给DetailViewController,ios,objective-c,cocoa-touch,nsstring,Ios,Objective C,Cocoa Touch,Nsstring,MasterViewController.h NSString *quality; @property (nonatomic ,retain) NSString *streamQuality; MasterViewController.m #import DetailViewController.h -(void)viewDidLoad { quality = [NSString stringWithFormat:@"string to pass"]; ... } -

MasterViewController.h

NSString *quality;
@property (nonatomic ,retain) NSString *streamQuality;
MasterViewController.m

#import DetailViewController.h

-(void)viewDidLoad {
    quality = [NSString stringWithFormat:@"string to pass"];

    ...

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) {
        DetailViewController *detailView = [segue destinationViewController];

        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        theList = [app.listArray objectAtIndex:indexPath.row];

        detailView.theList = theList;

        detailView.streamQuality = quality;

    }
}
@synthesize streamQuality;

NSLog(@"Final: %@", streamQuality);
DetailViewController.h

NSString *quality;
@property (nonatomic ,retain) NSString *streamQuality;
DetailViewController.m

#import DetailViewController.h

-(void)viewDidLoad {
    quality = [NSString stringWithFormat:@"string to pass"];

    ...

}

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"showDetail"]) {
        DetailViewController *detailView = [segue destinationViewController];

        NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];

        theList = [app.listArray objectAtIndex:indexPath.row];

        detailView.theList = theList;

        detailView.streamQuality = quality;

    }
}
@synthesize streamQuality;

NSLog(@"Final: %@", streamQuality);
输出:大多数情况下,我会得到“线程1:EXC\u坏访问(代码=2,地址=0x10)”
或类似的随机结果 “最终:复制音频地址”



但是这很好:

detailView.streamQuality = @"hello";

您应该创建一个属性来保留
NSString
对象质量。 例如:

当然,你必须综合它:

@synthesize quality;
然后应该使用此属性设置字符串。像这样:

self.quality = @"string to pass";

什么是质量?在将其传递给detailViewController之前是否检查了其值?是否使用ARC?如果不是,则stringWithFormat返回自动释放的字符串,因此需要保留它。尝试使用:quality=[[NSString stringWithFormat:@“要传递的字符串”]retain];。同样的问题再次出现…@Lorenz:在哪一行上,您遇到崩溃?0x1f7dd85:movl 16(%edx),%edx-线程1:EXC_BAD_访问(代码=2,地址=0x10)@Lorenz:您使用断点检查过吗?在哪一行(从您在问题中添加的行中),您正在崩溃?从没有格式的文本创建字符串有什么意义?只需使用字面意思。