Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 属性失去其价值(长但易于理解)_Iphone_Ios_Xcode_Ipad - Fatal编程技术网

Iphone 属性失去其价值(长但易于理解)

Iphone 属性失去其价值(长但易于理解),iphone,ios,xcode,ipad,Iphone,Ios,Xcode,Ipad,在我的应用程序中,我有: 汽车 myshop.h myshop.m 所以,我有一个方法,显示一个popover,我可以从tableview中选择一辆车。这个popover回调是myshop.m中的一个方法,使用委托,在这里我给mycar.model赋值,并调用上面的方法doA,所有这些都可以正常工作,并在输出中显示mycar.model的值: -(void) doA { NSLog(@"car = %@", mycar.model ); ... } 但是。。。现在问题来了:我在my

在我的应用程序中,我有:

汽车 myshop.h myshop.m 所以,我有一个方法,显示一个popover,我可以从tableview中选择一辆车。这个popover回调是myshop.m中的一个方法,使用委托,在这里我给mycar.model赋值,并调用上面的方法doA,所有这些都可以正常工作,并在输出中显示mycar.model的值:

-(void) doA
{
   NSLog(@"car = %@", mycar.model );
   ...
}
但是。。。现在问题来了:我在myshop视图中有一个按钮。当我按下此按钮时,该操作显示一个警报视图(在.h中有代理)。此警报的返回将调用:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   [self doA];
   ...
}
当doA试图将mycar.model写入输出时,程序崩溃。Xcode的输出视图中没有显示错误。在代码中,它显示:线程1:程序接收信号:
EXEC\u BAD\u ACCESS

我可以在popover视图中显示任意数量的汽车,但当按下按钮,AlertView关闭时,程序崩溃

为了进行测试,我在其他方法中调用[self-doA],这些方法通过委托从另一个类运行,并且始终是应用程序

你知道怎么回事吗

完成代码

这里有错误吗?(这是car.m的一种方法)

我不会在代码中的任何地方初始化属性(模型、价格等等)

解决了

这是一个内存管理问题

我改变

model = [data objectForKey:@"model"];

我希望我现在是!至少这个应用看起来很好用


谢谢很多朋友

您的代码中有一个内存管理错误。我不知道bug在哪里,它几乎肯定不在您发布的代码中(我觉得这一切都很完美)

除非您发布更多代码,否则我们无法帮助您修复此代码

我强烈建议您启用ARC。它是相当新的,但现在已经足够老了,每个人都应该开始使用它


如果您打开ARC,您的bug很有可能会消失。

您发布的代码看起来不错,但在其他地方,您一定是过度发布了mycar。使用“僵尸”工具对其进行配置,它会告诉您它的发布位置。

我尝试过启用ARC。。。但是我使用的是SBJson,它在编译时显示了很多错误…您可以通过添加
-fno objc ARC
编译器标志来禁用SBJson中所有
*.m
文件的ARC:sorry。。僵尸是什么意思?
-(void) doA
{
   NSLog(@"car = %@", mycar.model );
   ...
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
   [self doA];
   ...
}
- (void) setValues: (NSDictionary *) data  
{

    model = [data objectForKey:@"model"];
    price = [data objectForKey:@"price"];
    ...
model = [data objectForKey:@"model"];
model = [[NSString alloc] initWithFormat:@"%@", [data objectForKey:@"model"]];