首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ARC下的IBOutlet和viewDidUnload

在苹果的开发框架中,ARC(自动引用计数)是一种内存管理策略,它可以自动处理对象的生命周期,避免内存泄漏和循环引用等问题。在Objective-C和Swift中,ARC都有应用。

在Objective-C中,IBOutlet和viewDidUnload是用于处理Interface Builder中的视图控件和视图控制器的生命周期。IBOutlet用于将Interface Builder中的视图控件连接到代码中,以便在代码中使用和操作。而viewDidUnload则是在视图控制器的视图被卸载时调用的方法,可以在这个方法中进行一些内存释放的操作,以避免内存泄漏。

在Swift中,IBOutlet的概念和使用方式与Objective-C类似,但是viewDidUnload方法已经被废弃,取而代之的是didReceiveMemoryWarning方法。在Swift中,可以使用deinit方法来进行一些内存释放的操作,以避免内存泄漏。

总的来说,ARC下的IBOutlet和viewDidUnload是用于处理视图控件和视图控制器的生命周期,以避免内存泄漏和循环引用等问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ARC 环境 dealloc 使用误区

在MRC时代,我们需要在 dealloc中做很多,比如释放对象,如今我们已经进入ARC时代,对于普通对象释放,系统已经帮我们做好了;是不是我们就再也不用担心内存问题了呢?答案是否定 。...一.dealloc 使用 a. 什么情况会调用呢? 当对象引用计数为0,系统会自动调用dealloc方法,回收内存。...//调用方法 -(void)dealloc{ // [super dealloc]; //ARC环境下不需要调用。因为系统会 自动调用该方法帮助释放父类对象。...} b.调用顺序 一般说调用顺序是,当子类对象释放完时,然后再释放父类所拥有的实例。这一点与调用初始化方法,正好相反。...根据上面的方法排查: 最后发现自己在delegate用不是week而是strong。顿时感觉自己好傻! ? 自己挖坑 总结:再使用dealloc时,最好先看一该方法有没有调用!

86240

编码篇-ARC内存泄漏

那么ARC内存泄漏场景有哪些呢 值得注意是:ARC是编译器(时)特性,而不是运行时特性,更不是垃圾回收器(GC)。...ARC这是一种编译期内存管理方式,在编译期间,编译器会判断对象使用情况,并在合适位置加上retainrelease,使得对象内存被合理管理。...所以,从本质上说ARCMRC在本质上是一样,都是通过引用计数内存管理方式。...MRC内存使用 这部分不做详细介绍,也是注意配对使用,需要说明是,如果代码中有部分文件是MRC,在已有文件中加代码时候注意一,不能都按照ARC方式处理。...集成后显示 这篇ARC内存泄漏,洋洋洒洒说了这么多,算是总结比较详细全面的。希望对大家有价值。

1.6K20

浅解ARC __bridge、__bridge_retained__bridge_transfer

所以Core FoundationFoundation中对象在相互转换过程中会涉及到对象全部权转换。这里便用到了bridge修饰符。...这时便应该使用__bridge_retain关键字来进行转换 p = (__bridge_retain void *)obj; // 上面这段代码在非ARC环境能够表示为 p = obj; [(id...当在非ARC环境,Core Foundation对象Foundation对象能够通过标准C语言类型转换来进行转换(Toll-Free bridge)。...环境,上面这句等同于 NSString *str = cfStr; CFRelease(cfStr); 实际上,在Core Foundation内部存在两个用于CF对象Foundation对象转换函数...总结 bridge 用于被ARC管理对象不被ARC管理对象之间转换 __bridge 仅仅负责单纯类型转换,须要格外注意对象生存周期。

56710

OC优化指南

不会被OS删除 缺点:需要自己考虑清除缓存策略,确保目录不会太大 作用:如果希望app部分内容被备份时使用 Hashing方法被NSSetNSDictionary来实现。...b) DOM正相反,它获取数据内容非常快速,但是相比SAX,存储数据结构要花费更多时间空间。 多线程优点: a) 充分利用所有cpu。...分为复杂算法扫描大字符串 b) I/O-Bound:时间花费在等待从其它source获取数据上。 当CPU需要从一个现场切换到另一个线程是,需要话费时间资源。...NSMutableCharacterSet, NSMutableData,NSMutableDictioanry,NSMutableSet,NSMutableString Idle-Time通知:NSPostWhenIdle ARC...在viewDidUnload中,仅仅clean所有views。其它对象应该在didReceiveMemoryWarning里进行清除。

77310

iOS_38_手势

3大类:触摸、加速计、远程遥控 仅仅有响应者子类,才干够接收处理事件 父类响应者中定义事件处理接口例如以下: 触摸事件处理四个方法例如以下:(仅仅要实现,系统会自己主动调用)...(如位置、所点对象) 事件对象UIEvent,经常使用属性是:事件类型 触摸四个方法(即过程)具体解释:注意同一时候一前一后触摸情况 必须先找到事件最合适响应者(从父到子地找...:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1.0] // 监听方法 - (void)taping { // 每次tap...selector(longPressing)]; // 设置属性:至少长按2秒,默认0.5秒 longPress.minimumPressDuration = 2; // 按之后...()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1.0]// 手势监听方法- (void)swiping

89920

IOS开发之自动布局显示网络请求内容

在上一篇博客中详细介绍了IOS开发中相对布局绝对布局,随着手机屏幕尺寸改变,在App开发中为了适应不同尺寸手机屏幕,用自动布局来完成我们想要实现功能效果显得尤为重要。...iPhone4,5将要发布iPhone6屏幕大小都不一样,所以屏幕适配是我们搞App开发必须要考虑问题。   ...界面要求:       1.下面刷新按钮在3.54.0寸屏上离下面的bottom距离都是为20点。       ...5 -(void)qingquWeibo 6 { 7 8 NSString *str; 9 10 //随机确定是那个字符串 11 int i = arc4random...5 @property (strong, nonatomic) IBOutlet UILabel *myLabel; 6 7 //请求数据源按钮 8 @property (strong,

75160

iOS开发之地图

一、理论知识 地图既然是控件,就可以在StoryBoard代码中使用 地图上如果想要显示用户位置,必须与定位配合,那么就需要创建定位管理器、设置权限等,可以参考iOS开发之定位,同时需要设置地图属性...StoryBoard中添加地图控件 拖拽IBOutlet 声明CLLocationManager 声明权限 设置gpx数据 二、地图基本使用 实现功能:显示地图,并且显示用户所在位置,点击用户位置..., nonatomic) IBOutlet MKMapView *map; @property (strong, nonatomic) CLLocationManager *manager; @end...都可以插入一个标注,标注标题副标题显示是具体位置 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event...int i = arc4random() % 11; NSString *imgName = [NSString stringWithFormat:@"icon_map_cateid

1.1K20

iOS中assign、retain、copy、weak、strong区别以及nonatomic含义

assign: assign一般用来修饰基本数据类型,包括基础数据类型 (NSInteger,CGFloat)C数据类型(int, float, double, char, 等等),为什么呢?...之所以在NSString这类有可变类型对象上使用,是因为它们有可能对应可变类型如NSMutableString之间进行赋值操作,为了防止内容被改变,使用copy去深复制一份。...以上三个可以在MRC中使用,但是weakstrong就只能在ARC中使用,也就是自动引用计数,这时就不能手动去进行retain、release等操作了,ARC会帮我们完成这些工作。...IBOutlet、Delegate一般用就是weak,这是因为它们会在类外部被调用,防止循环引用。...strong: 相对,strong就类似与retain了,叫强引用,会增加引用计数,类内部使用属性一般都是strong修饰,现在ARC已经基本替代了MRC,所以我们最常见就是strong了。

22310

UIKit Dynamics:抛出视图 —《Graphics & Animation系列三》

:blue @IBOutlet weak var blueSquare: UIView!...红色蓝色方块表示让图片做动画UIKit动态物理引擎点:蓝色方块表示触摸开始位置,红色方块会在手指移动时跟踪。...(in: view) redSquare.center = attachmentBehavior.anchorPoint default , 这里代码简单地将锚点红色方块与手指的当前位置对齐...计算速度大小 - 这是由x方向速度y方向速度形成三角 形斜边。 要理解这个背后理论,请查看这个Trigonometry for Game Programming教程。...2、假设手势速度超过为动作设置最小阈值,则设置push行为。 所需方向由xy速度组成,并转换为一个给定方向部分向量。 一旦设置了推送行为,就将其添加到动画序列中。

1.1K20

didReceiveMemoryWarning iOS开发

iPhone每个app可用内存是被限制,如果一个app使用内存超过20M,则系统会向该app发送Memory Warning消息。...当重新显示该viewController时,执行过viewDidUnLoadviewcontroller(即原来在后台)会重新调用loadview -> viewDidLoad。...在iOS 3.0以及更高版本中,你应该重载viewDidUnload函数来释放任何对view引用或者它里面的内容(子view等等)。 这个网上资料都说很不全面,尤其是蓝色字部分。...而多数情况是做nib文件后续工作。 网上资料对这个函数描述则完全不对。 三、viewDidUnload 这个函数是viewDidLoad对立函数。...网上对这个函数描述含含糊糊,看了等于没看。 另外:如果controller存储了其他objectview引用,你还得在dealloc方法中释放这些内存。

2.5K30

【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

尺寸, UIView 中定义内容 @property(nonatomic) CGRect frame; ; 6.bounds 属性 : 控件本身 所在矩形框 位置 尺寸, 其中位置就是...6.设置按钮点击状态背景图片 : 将 State Config 切换到 Highlighted 状态, 此时可以设置 高亮状态按钮属性, 将 Background 中设置对应图片, 文字设置成按文字...@property (nonatomic, weak) IBOutlet UIButton * mainButton; ; 11.CGRect 结构体介绍 : 其中 CGPoint CGSize...按钮背景图片资源 , 2 个按钮在 Default Highlighted 两种状态图片 ; 2.按钮图片设置 : 为按钮 Default Highlighted 两个状态设置不同图片...arc4random_uniform() 方法, 代码为 arc4random_uniform(255) ; 使用 arc4random_uniform(255) / 255.0 即可 获得一个 0 ~

4.6K30

iOS理论基础(一)

1.什么情况使用 weak 关键字 a.在 ARC 中,在有可能出现循环引用时候,往往要通过让其中一端使用 weak 来解决,比如: delegate 代理属性。...b.自身已经对它进行一次强引用,没有必要再强引用一次,此时也会使用 weak,自定义 IBOutlet 控件属性一般也使用 weak;当然,也可以使用strong。...ARC 中写不写都行:对于 block 使用 copy 还是 strong 效果是一样,但写上 copy 也无伤大雅,还能时刻提醒我们:编译器自动对 block 进行了 copy 操作。...下面做解释: copy 此特质所表达所属关系与 strong 类似。然而设置方法并不保留新值,而是将其“拷贝” (copy)。...这个类是 NSString 子类,表示一种可修改其值字符串,此时若是不拷贝字符串,那么设置完属性之后,字符串值就可能会在对象不知情情况遭人更改。

23120
领券