【问题标题】:scrollView with Memory Management in iOS which is very strange caused EXC_BAD_ACCESS在 iOS 中使用内存管理的滚动视图非常奇怪导致 EXC_BAD_ACCESS
【发布时间】:2012-03-08 12:46:44
【问题描述】:

今天我得到一个“EXC_BAD_ACCESS”,所以我调试代码来解决问题。现在我知道在哪里 问题是,但我不知道为什么。你能帮帮我吗?

在 -(无效) 解除分配 { …… [self.scrollView 发布]; // 如果我在上面的这一行添加注释,我的应用程序将工作,否则它将死亡。 ......

}

这些是我使用 [scrollView] 的地方

@interface ChatFriendInfoController :UIViewController
{
    UIScrollView *scrollView;
}

@property (nonatomic, retain) IBOutlet UIScrollView *scrollView;

@implementation ChatFriendInfoController
@synthesize scrollView;

self.scrollView.frame = CGRectMake(0, 64, 320, 416);
self.scrollView.alwaysBounceVertical = YES;
self.scrollView.contentSize = CGSizeMake(320, 960);

[self.scrollView addSubview:infoTable];

就是这样。谢谢。

【问题讨论】:

    标签: memory-management ios5 uiscrollview exc-bad-access


    【解决方案1】:

    当滚动视图的@property 行使用“retain”定义时,XCode 为您构建的访问器函数将已经内置了保留和释放调用。

    所以,每当您使用 self.scrollview = 时,您实际上是在调用 [self setScrollView:] ,这将释放任何先前的对象并保留新的对象。所以你可以释放对象并将变量设置为 nil 只需 self.scrollview = nil;

    使用上面的代码,我无法判断您是否分配和初始化了一个新的 UIScrollView 对象。如果你还没有,那么就没有什么可以释放并且尝试这样做会崩溃。

    【讨论】:

      【解决方案2】:

      您是否尝试过不使用 self 来释放滚动视图。

      [scrollView release];
      

      其他

      self.scrollView = nil;
      

      【讨论】:

        猜你喜欢
        • 2017-02-27
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 2016-06-27
        • 1970-01-01
        相关资源
        最近更新 更多