Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.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
Objective c 应用程序崩溃,尽管已启用ARC_Objective C_Ios_Debugging_Automatic Ref Counting - Fatal编程技术网

Objective c 应用程序崩溃,尽管已启用ARC

Objective c 应用程序崩溃,尽管已启用ARC,objective-c,ios,debugging,automatic-ref-counting,Objective C,Ios,Debugging,Automatic Ref Counting,我已经在一个iOS应用程序上工作了一段时间,它几乎可以提交了。然而,当我把它交给少数人进行测试(运行iOS 5)时,他们报告了应用程序崩溃、主屏幕显示在手机上或冻结的应用程序屏幕出现时没有任何响应的情况 应用程序已启用ARC,Xcode不显示任何警告。所以,我很担心到底出了什么问题。我已按以下方式声明属性: @property (nonatomic) IBOutlet UILabel *devCountLabel; @property (nonatomic) IBOutlet UIView *

我已经在一个iOS应用程序上工作了一段时间,它几乎可以提交了。然而,当我把它交给少数人进行测试(运行iOS 5)时,他们报告了应用程序崩溃、主屏幕显示在手机上或冻结的应用程序屏幕出现时没有任何响应的情况

应用程序已启用ARC,Xcode不显示任何警告。所以,我很担心到底出了什么问题。我已按以下方式声明属性:

@property (nonatomic) IBOutlet UILabel *devCountLabel;

@property (nonatomic) IBOutlet UIView *splashView;
同样,还声明了其他属性。谁能提供一个解决方案?它主要是基于网络的应用程序,因此CoreData的使用量最低

PS:该应用程序在模拟器中不会崩溃,所以我猜它与内存有关。而且事故是随机发生的。因此,重复一组步骤来重现崩溃也没有帮助。
例如,当我点击一个按钮时,在正常情况下会产生ModalViewController动画。现在,大多数情况下都会出现这种情况,其他情况下会冻结应用程序。

崩溃日志会有所帮助,但我猜:

Interface Builder Outlet属性应该是
弱的
,因此它们在发布后将变为
nil

在代码中,它们的语义是
assign
(这是默认的,因为您只编写了
非原子的
),用于基本类型。当它发布时,你会得到一个悬空的指针,当你使用它时,应用程序就会崩溃

试试这个:

@property (weak, nonatomic) IBOutlet UILabel *devCountLabel;
@property (weak, nonatomic) IBOutlet UIView *splashView;

崩溃日志会有所帮助,但我猜:

Interface Builder Outlet属性应该是
弱的
,因此它们在发布后将变为
nil

在代码中,它们的语义是
assign
(这是默认的,因为您只编写了
非原子的
),用于基本类型。当它发布时,你会得到一个悬空的指针,当你使用它时,应用程序就会崩溃

试试这个:

@property (weak, nonatomic) IBOutlet UILabel *devCountLabel;
@property (weak, nonatomic) IBOutlet UIView *splashView;


你也可以添加crab日志吗?crab日志?你是在说控制台上的东西吗?嗯..通过模拟器那里什么都没有( :(我必须通过电话确认。。我猜@rishi指的是CrashLog/sARC很好,但它不是魔法;它不能让你对bug和崩溃免疫。我担心我们需要更多的代码来帮助你缩小范围。当然@zpasternack。。但我不确定崩溃的起源。所以我还没有弄清楚代码并粘贴到这里。崩溃日志没有显示任何内容:(你也可以添加crab日志吗?crab日志?你是在谈论控制台上的东西吗?嗯..通过模拟器那里什么都没有...)(我必须通过电话确认。。我猜@rishi指的是CrashLog/sARC很好,但它不是魔法;它不能让你对bug和崩溃免疫。我担心我们需要更多的代码来帮助你缩小范围。当然@zpasternack。。但我不确定崩溃的起源。所以我还没有弄清楚代码并粘贴到这里。崩溃日志没有显示任何内容..:(从Xcode 4.3开始,“strong”是没有明确所有权的属性声明的默认值。请参阅。@zpasternack感谢您的提醒!然后等待日志,这样我就可以更新我的答案了。这并不是说IBOutlet属性必须是弱的。这可能是一件好事。但是,如果您查看苹果本身的UI代码,您会发现生成,IBOutlet属性通常是
strong
,通过显式调用在
viewDidUnload
@Nate中将其置零,只有当视图在视图控制器的视图之外时,Xcode才会生成
strong
输出,因为它可能比视图控制器的视图更有效。如果将视图放置在视图控制器内部在的视图中,它会生成
weak
outlet。我将我的所有iboutlet都更改为“weak”属性,现在不会发生崩溃。希望它保持这种状态。从Xcode 4.3开始,“strong”是没有明确所有权的属性声明的默认值。请参阅。@zpasternack感谢提醒!等待日志,以便更新我的an回答。IBOutlet属性一定很弱并不是真的。这可能是一件好事。但是,如果你看看苹果自己生成的UI代码,IBOutlet属性通常是
strong
,在
viewDidUnload
@Nate中显式调用将它们消除,Xcode只生成
strong
outletf您的视图在视图控制器的视图之外,因为它可能比视图控制器的视图更有效。如果您将视图放置在视图控制器的视图内,它将生成
出口。我将所有IBoutlet更改为“弱”属性,目前不会发生崩溃。希望保持这种状态。