菜鸟教程小白 发表于 2022-12-12 15:58:35

iPhone应用程序在离开并返回应用程序后崩溃


                                            <p><p>我在使用定位服务的 iPhone 应用程序中发生了奇怪的崩溃。当我离开应用程序(通过按主页按钮)并立即返回(通过单击应用程序图标)时,它会得到一个 EXC_BAD_ACCESS,显然是因为一个对象已经变成了僵尸。 </p>

<p>仪器显示违规对象的以下历史记录:<img src="/image/IZ0Xf.png" alt="Instruments Zombies display"/> </p>

<p>除了最后一个(崩溃)之外的所有调用者都来自框架代码(除了 main.m 之外没有黑色名称),所以我看不出错误来自哪里。我在 Instruments 中遗漏了什么吗?我觉得它有很多信息,但也许我看错了部分。</p>

<p>另外两个可能的提示:</p>

<ol>
<li><p>我认为这在 iOS 5 之前不会发生</p></li>
<li><p>控制台显示一条关于“仅添加到内存”的虚假消息,我无法识别/理解:
<img src="/image/KWgkE.png" alt="Instruments console log"/> </p></li>
</ol>

<p>欢迎提出任何建议!</p>

<p>在引用 locn 的成员时发生崩溃,一个 ACLocation 对象:</p>

<pre><code>@property(nonatomic,retain)ACLocation *locn;
      emailBody = [NSString stringWithFormat:
                        NSLocalizedString(@&#34;%@\nLocation: %@, %@, %@&#34;,@&#34;Email text header3&#34;),
                        emailBody,
                        locn.ACLocality,
                        locn.ACAdministrativeArea,
                        locn.ACCountry
                     ];
</code></pre>

<p>ACLocation 定义为:</p>

<pre><code>@interface ACLocation : NSObject &lt;CLLocationManagerDelegate&gt;{
    double ACLatitude;
    double ACLongitude;
    double ACAltitude;
    double ACAltitudeAccuracy;
    NSString *ACLocality;
    NSString *ACAdministrativeArea;
    NSString *ACCountry;
}
@property (nonatomic)double ACLatitude;
@property (nonatomic)double ACLongitude;
@property (nonatomic)double ACAltitude;
@property (nonatomic)double ACAltitudeAccuracy;
@property (nonatomic,retain)NSString *ACLocality;
@property (nonatomic,retain)NSString *ACAdministrativeArea;
@property (nonatomic,retain)NSString *ACCountry;
@end
</code></pre></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>你有一个<strong>weak</strong>属性,而你应该有一个<strong>strong</strong>。查看您的属性并将其更改为强。</p>

<p>如果您正在使用实例变量(它们现在使用 xcode 自动合成),例如 <code>someVariable</code>,您可以使用 <code>self.someVariable</code> 访问它,以便保留它。不使用 <code>self.</code> 您将绕过 setter ,并且未在变量上设置 <code>retain</code>。</p></p>
                                   
                                                <p style="font-size: 20px;">关于iPhone应用程序在离开并返回应用程序后崩溃,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/19524252/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/19524252/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: iPhone应用程序在离开并返回应用程序后崩溃