Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么要在addsubview:一个view对象后,release它

为什么要在addsubview:一个view对象后,release它

作者头像
EltonZheng
发布于 2021-01-21 23:43:16
发布于 2021-01-21 23:43:16
40700
代码可运行
举报
运行总次数:0
代码可运行

先看代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
IMGView *imgView = [[IMGView alloc] initWithFrame:CGRectMake(10, 0, 300, 300)];
[self.view addSubview:imgView];
[imgView release];

为什么imgView要release呢?可能很多人跟我一样,之前不是很清楚。 我们逐行分析一下

第一行,alloc一次,imgView对象retainCount为1, 第二行,addSubview一次,此方法会把你传过去的对象retain一次,那么此时它的retainCount为2。self.view变为它的第二个待有者。参考:The receiver retains view. If you use removeFromSuperview to remove view from the view hierarchy, view is released. 第三行,调用release方法,此处释放对imgView的所有权,retainCount减1。

到语言句尾imgView的所有者只剩下self.view,并且它的retainCount仅为1。内存管理第一铁则,谁retain(alloc,copy)谁release(autorelease)。上述的做法也是为了符合这一准则。


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
addSubView需要注意的几个点为什么要在addsubview:一个view对象后,release它?
addSubview: Adds a view to the end of the receiver’s list of subviews. 译:增加一个视图到接收者的子视图列表中。 - (void)addSubview:(UIView *)view Parameters view The view to be added. This view is retained by the receiver. After being added, this view appears on top of any ot
猿人谷
2018/01/17
1.4K0
手机通讯录实现
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/116942.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
1.3K0
给TableView添加背景
iPhone SDK提供了默认的几个TableView样式,但是如果想提供更个性化的样式就需要自己定义。 比如添加背景
EltonZheng
2021/01/26
1.4K0
Quartz2D复习(二) --- 手势解锁
这次支付宝手机客户端升级,把手势解锁那个功能去掉了,引起很多人的抱怨,觉得少了手势解锁的保护,个人信息容易泄漏了。。。
tandaxia
2018/09/27
5040
Quartz2D复习(二) ---  手势解锁
Quartz2D复习(三) --- 涂鸦
和上一篇手势解锁不一样,手势解锁只画了一条路径,从触摸开始--》触摸移动--》触摸结束 ,然后路径完成了,渲染出来就是手势解锁了;
tandaxia
2018/09/27
6930
Quartz2D复习(三) --- 涂鸦
第一个APP:IOS做简单运算的计算器
步骤: 1.打开Xcode,单机Creat a new Xcode project 2.左边选择ios下Application,右边选择single view Application 3.填写项目名称单机Next 4.ViewController.h中定义成员和方法 // // ViewController.h // TestCalculator4 // // Created by heyonggang on 13-11-28. // Copyright (c) 2013年 MiracleHe. A
猿人谷
2018/01/17
1.7K0
iOS 内存管理相关面试题
保证任何时候指向对象的指针个数和对象的引用计数相同,多一个指针指向这个对象这个对象的引用计数就加1,少一个指针指向这个对象这个对象的引用计数就减1。没有指针指向这个对象对象就被释放了。
iOSSir
2019/06/14
1.6K0
iOS_自定义UITabBarController标签视图控制器
首先创建一个类,继承自UItabBarController 然后在.m文件中:
mikimo
2022/07/20
5780
Quartz2D复习(一)--- 基础知识 / 绘制线段圆弧 / 图片水印 / 截图
1、Quartz 2D是一个二维绘图引擎,同时支持ios和Mac系统; Quart2D的API是纯C语言的,API来自于Core  Graphics框架:
tandaxia
2018/09/27
2.7K0
Quartz2D复习(一)---  基础知识 / 绘制线段圆弧 / 图片水印 / 截图
iOS 动画笔记 (二)
有它们俩你就够了! 说明:下面有些概念我说的不怎么详细,网上实在是太多了,说了我觉得也意义不大了!但链接都给大家了,可以自己去看,重点梳理学习写动画的一个过程和一些好的博客! 一:说说这两个三方库,Canvas 和 POP          这里有详细的说明了它们俩的优缺点,我们就不在粘贴复制浪费时间了,链接在下面! iOS动画库Pop和Canvas各自的优势和劣势是什么? 下面先说说这两库的基本情况完了再说说他们的使用! Canvas -- iOS 动画库 :安装就在git上看就行,点前面的就
Mr.RisingSun
2018/01/09
8810
iOS 动画笔记 (二)
Quartz2D复习(四) --- 图层CALayer和动画CAAnimation
1)、在ios中,能看得见摸得着的东西基本上都是UIView, 比如按钮、文本标签、文本输入框、图标等,这些都是UIView
tandaxia
2018/09/27
1.5K0
Quartz2D复习(四) --- 图层CALayer和动画CAAnimation
如何配置iAd
导入iAd.framework 2.选择要定制iAd的TabViewController.h , 添加代码 #import <UIKit/UIKit.h> #import <iAd/ADBannerView.h> @interface TabViewController : UIViewController { ADBannerView *adView; UILabel *adStatus; } - (void)bannerViewDidLoadAd:(ADBannerView *)ba
EltonZheng
2021/01/26
4800
如何在iPhone编程中使用UITextField
首先我们需要在viewController的接口中声明实现UITextFieldDelegate代理协议
EltonZheng
2021/01/22
6380
View编程指南(三)
由于View对象是应用程序与用户交互的主要方式,因此它们有许多责任。 这里仅仅是少数:
Helloted
2022/06/07
1.9K0
View编程指南(三)
iOS开发系列——纯代码实现iOS开发
storyboard进行界面设计固然不错,特别是对于初学者经常会使用设计器进行界面设计,但是实际开发过程中我们很多情况下会直接使用代码进行界面布局,特别是对于复杂的界面布局更是如此。下面我们就从一个空项目建立一个类似于前面的登录界面。
Kris大鲨
2018/05/05
3.6K5
iOS开发系列——纯代码实现iOS开发
IOS5开发-控件位置适应屏幕旋转代码
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toOrientation                                  duration:(NSTimeInterval)duration {     if (toOrientation == UIInterfaceOrientationLandscapeLeft ||         toOrientation == UIInterfaceOrientat
阿新
2018/04/12
1.5K0
【IOS开发基础系列】UISearch专题
        UISearchBar是由两个subView组成的,一个是UISearchBarBackGround,另一个是UITextField.
江中散人_Jun
2023/10/16
6800
【IOS开发基础系列】UISearch专题
UIViewController的生命周期及iOS程序执行顺序
UIViewController的生命周期及iOS程序执行顺序 当一个视图控制器被创建,并在屏幕上显示的时候。 代码的执行顺序 1、alloc 创建对象,分配空间 2、init (initWithNibName) 初始化对象,初始化数据 3、loadView从nib载入视图,通常这一步不需要去干涉。除非你没有使用xib文件创建视图 4、viewDidLoad载入完成,可以进行自定义数据以及动态创建其他控件 5、viewWillAppear视图将出现在屏幕之前,马上这个视图就会被展现在屏幕上了 6、viewD
用户1941540
2018/05/11
2K0
iOS - 老生常谈内存管理(三):ARC 面世
ARC全称Automatic Reference Counting,自动引用计数内存管理,是苹果在 iOS 5、OS X Lion 引入的新的内存管理技术。ARC是一种编译器功能,它通过LLVM编译器和Runtime协作来进行自动管理内存。LLVM编译器会在编译时在合适的地方为 OC 对象插入retain、release和autorelease代码来自动管理对象的内存,省去了在MRC手动引用计数下手动插入这些代码的工作,减轻了开发者的工作量,让开发者可以专注于应用程序的代码、对象图以及对象间的关系上。   本文通过讲解MRC到ARC的转变、ARC规则以及使用注意,来帮助大家掌握iOS的内存管理。   下图是苹果官方文档给出的从MRC到ARC的转变。
师大小海腾
2020/04/24
2.3K0
iOS - 老生常谈内存管理(三):ARC 面世
OC对象原理(二)
上面的代码中,如果我们覆写了该类的allocWithZone方法,那么就会走到第31行的逻辑;不过一般而言我们是不会自己去覆写allocWithZone方法的,所以一般都会走第8~28行的逻辑。
拉维
2021/10/20
7470
相关推荐
addSubView需要注意的几个点为什么要在addsubview:一个view对象后,release它?
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验