十分简单的代码上的EXC_BAD_ACCESS错误

| 我正在使用导航控制器,并将另一个视图推入堆栈并设置了一个变量。尝试访问变量时,我得到EXEC_BAD_ACCESS :( 这是代码(我没有使用任何NIB):
#import <UIKit/UIKit.h>


@interface detailedView : UIViewController {

NSString *movieName2;
}

@property (nonatomic, retain) NSString *movieName2;

@end
#import \"detailedView.h\"


@implementation detailedView

@synthesize movieName2;



- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization
}
return self;
}

-(void) viewDidAppear:(BOOL)animated
{

self.view=[[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
self.view.frame=CGRectMake(213, 300, 355, 315);
self.view.backgroundColor=[[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@\"black.png\"]];



self.title=self.movieName2;
NSLog(@\"%@\",movieName2);
}   
调用者函数中的相关代码:
detailedView *details;


@property (nonatomic, retain) detailedView *details;
//正确合成并发布
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

NSLog(@\"Did Reach inside...\");

status=1;

self.title=@\"Back\";
details.movieName2=self.movieName;

NSLog(@\"```\");
NSLog(@\"2nd VC %@ sdfsdf\",details.movieName2); //Getting the ERROR here
NSLog(@\"1st VC %@ wrewrw\",self.movieName);
//viewerSearch *viewerSearchController=[[viewerSearch alloc] init];



[[self navigationController] pushViewController:details animated:NO];    

}
在里面:
 details=[[detailedView alloc] init];
// movieName是一个NSString,具有@property(nonatomic,copy)     
已邀请:
        当应用程序崩溃时,将出现崩溃日志,或者您将能够从调试器获取回溯信息。始终发布。 同样-类名应始终以大写字母开头。 尝试构建和分析;确保您的内存管理正确。 修复任何构建并分析发现的问题后,然后打开“僵尸”检测。     
        根据通过在by6ѭd
NSString
上调用
retain
然后通过记录对其进行跟踪的测试,我认为您的问题是is8ѭ被释放了。请检查关于
self.movieName
的内存管理规则是否已正确遵循。 附带说明一下,如果您未将NIB用于
detailedView
,则应在
loadView
中创建视图,而不是像看起来那样在
viewDidAppear:
中创建视图。
viewWillAppear:
只有在视图存在的情况下,对吗?我建议您将相关代码从
viewDidAppear:
移到
loadView
。     
        您应该始终复制字符串而不是保留它们。 所以改变
@property (nonatomic, retain) NSString *movieName2;
@property (nonatomic, copy) NSString *movieName2;
可能会解决您的问题。 另外,如果用
@\"something\"
self.movieName
中创建值,请勿释放该值。     

要回复问题请先登录注册