关于removeFromSuperview

关于  - (void)removeFromSuperview

苹果官网API中是这么描述的:

Unlinks the view from its superview and its window, and removes it from the responder chain.

译:把当前视图从它的父视图和窗口中移除,同时也会把它从响应事件操作的响应者链中移除。

说明一下几点:

1、执行removeFromSuperview方法,只是该视图不在屏幕中显示,并没有将该视图从内存中移除。所以我们如果需要使用该视图,不需要再次创建,而是直接addSubview就可以了。(若视图使用了懒加载,仅仅使用了removeFromSuperview,再次调用self.view时,不会执行懒加载方法的);

2、若要彻底移除视图,我们需要2步:removeFromSuperview 然后 置为nil;

3、无论是ARC还是MRC中多次调用removeFromSuperviewaddSubview:方法,都不会造成造成重复释放和添加。

4、苹果的官方API注明:Never call this method from inside your view’s drawRect: method.

译:永远不要在你的ViewdrawRect:方法中调用removeFromSuperview

转载请注明:

http://www.jianshu.com/p/b817c94cac0b

时间: 2024-08-25 03:46:42

关于removeFromSuperview的相关文章

【iOS开发-57】案例改进:block动画、控件的removeFromSuperview、利用layer设置圆角矩形以及代理模式运用

接上述案例,案例改进:[iOS开发-50]利用创建新的类实现代码封装,从而不知不觉实践一个简单的MVC实验,附带个动画 在上述案例中,我们最后实现了一个动画,点击"下载"按钮变成"已下载"不可点击,然后中间出现提示框. (1)其中有一个小BUG,就是这个提示的透明度变成0之后,这个提示框并没有显示还留在内存中.需要: [tipsLabel removeFromSuperview]; (2)其次,我们可以用另一个代码实现动画,就是用block,这一次是2个block嵌

iOS之block mark (self removeFromSuperview 导致CPU使用率高达百分之百)

因为自己之前在block中需要递归调用自己本身,而没有用weak.导致在[self removeFromSuperview]方法时,CPU使用率一只高达百分之百..block一直持有self... fix: __weak 当前类 *weakSelf = self; [weakSelf 递归调用的方法]; 这样在remove时就不会一直持有self

iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iOS启动原理图.png 具体执行流程 程序入口进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 程序被激活[

如何解决IOS 动画中 Autolayout 与View Transforms的冲突

IOS 的动画放大与缩小,并非按照找它的中心点放大和缩小,而是左上角 .我分析了下原来是Autolayout 与View Transforms的冲突造成的. - (void) addSubviewWithZoomInAnimation:(UIView*)view duration:(float)secs option:(UIViewAnimationOptions)option { // first reduce the view to 1/100th of its original dimen

iOS点击查看大图的动画效果

对于图片来说,除了表情包,几乎都会被点击查看大图.今天就讲解一个查看和收起大图的动画效果,先直接看效果图: 如图所示,最开始是一个小图,点击小图可以查看大图.大图会从小图的位置和大小"弹"出来,同时背景变成半透明的阴影.点击大图或者阴影后,收起大图,同样地弹回到小图去,同时去掉阴影背景,就像是一张图片在伸大缩小一样. 现在看看这是怎么实现的.在思考一个动画的实现方法时,把动画的动作进行分解然后再一个个去思考怎么实现是一个好的习惯,我们稍微分解一下,这个动画在显示大图和收起大图的时候做了

手把手教你视频直播开发

#pragma mark viewDidLoad - (void)viewDidLoad { [super viewDidLoad]; self.liveRoomVC = LiveRoomVC_LiveRoomViewController; self.isTouchHomeEd = NO; NSLog(@"!!!%ld",(long)self.staruserid); [AppDelegate shareAppDelegate].isNeedReturnLiveRoom = YES;

ios 中在容器中移除单个控件的两个方法Subview

我们知道[parentView removeFromSuperView];  会把全部的view都移除.以下我们可以通过给subView设一个tag,然后遍历所有的subView,找到目标subView再删除. ? 1 2 3 4 5 for (UIView *subviews in [self.view subviews]) {         if (subviews.tag==22) {             [subviews removeFromSuperview];        

【解决方法】iOS 开发小技巧

1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view [[self.searchBar.subviews objectAtIndex:0] removeFromSuperview]; 2,NSDate: [java] view plaincopy 字母  日期或时间元素    表示     示例 G     Era   标志符     Text     

【面试】iOS 开发面试题(二)

1. 我们说的oc是动态运行时语言是什么意思? 答案:多态. 主要是将数据类型的确定由编译时,推迟到了运行时. 这个问题其实浅涉及到两个概念,运行时和多态. 简单来说,运行时机制使我们直到运行时才去决定一个对象的类别,以及调用该类别对象指定方法. 多态:不同对象以自己的方式响应相同的消息的能力叫做多态.意思就是假设生物类(life)都用有一个相同的方法-eat; 那人类属于生物,猪也属于生物,都继承了life后,实现各自的eat,但是调用是我们只需调用各自的eat方法. 也就是不同的对象以自己的