美文网首页
返回局部变量的值

返回局部变量的值

作者: YuWenHaiBo | 来源:发表于2016-06-22 23:19 被阅读18次

先看一段demo的代码,这个一个好友列表部分代码,设置每个session的头标题为button

//设置组的头视图

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIButton * button = [UIButton buttonWithType:UIButtonTypeSystem];
    button.backgroundColor = [UIColor cyanColor];
    [button setTitle:[NSString stringWithFormat:@"第%ld组",section] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(buttonAC:) forControlEvents:UIControlEventTouchUpInside];
    button.tag = section;
    return button;
}

刚开始看到这里我有点不理解,最后button出了这个方法不就会被释放了么?
在c语言中局部变量出了作用范围肯定会被释放,那么oc对象什么时候会被释放呢?
在ARC中,该对象如果没有强指针指向必然会被释放,非ARC中,对象的引用计数器为0,会被释放,ARC我的理解,只有强指针,和创建的时候,会使引用计数器加一,所以button刚开始创建,以及出了作用范围相抵消,出了这个方法后我可以通过触发button调用buttonAC:方法,所以button没有释放,那么肯定有东西强引用它,看来是这个代理方法的头视图强引用他了,第二个猜测,这里return函数底层实现了拷贝一份button对象,因为在c中局部变量返回的时候经常会被拷贝。
详见下面博客
http://www.cnblogs.com/edwardcmh/archive/2012/03/20/2408359.html
那么这里的对象是拷贝的呢?还是引用的呢?拷贝是深拷贝了?

相关文章

  • ★22.函数的形参与返回值的类型确定法则

    返回值 禁止返回局部变量的引用。 类的get函数返回值:内置类型返回值应为值类型,类类型返回值通常为const &...

  • 返回局部变量的值

    先看一段demo的代码,这个一个好友列表部分代码,设置每个session的头标题为button //设置组的头视图...

  • 函数栈帧以及调用约定相关的一些总结

    局部变量1--->Ebp-4 局部变量开始原始ebp寄存器值--->Ebp +0 原始ebp寄存器值返回地址--...

  • Python语言基础(五)

    函数的返回值 返回值可以是任何数据类型,使用return语句可以返回函数值并退出函数 全局变量和局部变量 在函数中...

  • 引用作为返回值的条件

    引用作为返回值 引用作为返回值的时候,有一些规则必须遵守。这些规则包括: 不能返回局部变量的引用。这条可以参照Ef...

  • Python语言基础7

    局部变量、全局变量、参数、返回值、拆包、可变、不可变类型、函数使用注意事项 1.局部变量 局部变量,就是在函数...

  • Block 略解

    block 实质是带有局部变量的匿名函数 写法 : 返回值类型 (^block名字)(参数) = ^ 有参(...

  • iOS逆向:函数本质(下)

    本文主要是讲解函数的参数、返回值、局部变量在汇编中是如何存储,以及CPSR标志寄存器 函数的参数和返回值 arm6...

  • 2018-11-27

    函数的变量 局部变量:函数中定义的变量 全局变量:代码顶部定义的变量 函数的返回值 函数被调用后会返回一个指定的值...

  • 函数式编程

    高阶函数 返回函数 函数作为返回值 闭包 注意到返回的函数在其定义内部引用了局部变量args,所以,当一个函数返回...

网友评论

      本文标题:返回局部变量的值

      本文链接:https://www.haomeiwen.com/subject/zoendttx.html