首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当目标-c有冲突返回类型时,为什么会发生这种情况?

当目标-c有冲突返回类型时,为什么会发生这种情况?
EN

Stack Overflow用户
提问于 2016-08-31 02:35:12
回答 1查看 68关注 0票数 1

问题是:我想像gif一样在iOS设备上显示顺序图,我使用UIImageView动画功能,所以在下面实现一个方法:

代码语言:javascript
复制
// Animation.m
// @files:     diagrams' array
// @fileDir:   file directory
// @imageview: Just UIImageView
//
- (void)showSeqDiagram:(NSArray*)files
            fileDirect:(NSString*)fileDir
             imageView:(UIImageView*)imageview
{
    int cnt = [files count];
    NSMutableArray * images = [NSMutableArray arrayWithCapacity:cnt];
    for (id file in files)
    {
        NSString * imageName = [NSString stringWithFormat:@"%@/%@", fileDir, file];
        UIImage * image = [UIImage imageNamed:imageName];

        if(!image)
            continue;
        [images addObject:image];
    }
    imageview.animationImages = images;

    imageview.animationDuration = 5;
    imageview.animationRepeatCount = 1;
    [imageview startAnimating];
}

到目前为止,一切都很顺利。在头文件中声明返回类型时,我犯了一个错误,如下所示:

代码语言:javascript
复制
//Animation.h
- (UIImageView*)showSeqDiagram:(NSArray*)files
                    fileDirect:(NSString*)fileDir
                     imageView:(UIImageView*)imageview;

我称这个方法为in - (void)loadView

代码语言:javascript
复制
- (void)loadview
{
......
[self showSeqDiagram:files fileDirect:fileDir imageView:imageview];
......
}

然后在呼叫位置坠毁,并将EXC_BAD_ACCESS(code=1 )抛到iPhone5模拟器和设备上,iOS verison9.3;

偶尔在iPhone6模拟器上崩溃,iOS版本9.3;

从未在iPhone6/6 6plus设备和iPhone6plus模拟器上崩溃,在iOS 7-9上进行了测试。

我知道这是错误的,但想知道为什么会这样,有人能解释一下吗?提前感谢~

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-31 09:15:47

好吧,我的同事给出了答案,下面是细节:

  • 第一,背景:
  • arm-arch存储方法返回值在%rax寄存器中;
  • 对象在ARC模式下不会立即释放,_obj_release_XXX在RunLoop中具有最低优先级的

所以showSeqDiagram不会返回任何值,所以%rax寄存器没有值,但是autoReleasePool尝试在短时间内释放%rax中的"UIImageView“obj (优先级是最低的)。在这么短的时间内,如果其他RunLoop中的某些方法覆盖%rax,那么它就不会崩溃;否则,如果没有人重写%rax,那么崩溃就会发生。

这在一定程度上可以解释为什么随机坠毁。有没有更好的答案?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39239889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档