ios - __weak IBOutlet ivars 需要发布和/或不良做法?

标签 ios automatic-ref-counting uistoryboard

我正在使用 XCode 5.1.1,目标是 iOS 7.0。

当使用助理编辑器从我的 Storyboard创建媒体时。我注意到我有几个选择来创建属性或 ivar。我一直在使用的是直接拖动到我的 *.m @implementation 并创建如下代码:

@implementation AudioViewController
{
    __weak IBOutlet UILabel *posLabel;
    __weak IBOutlet UILabel *durationLabel;
    __weak IBOutlet UIButton *playButton;
}

我不需要在这个类之外访问这些,所以这看起来很方便,但我想知道这个方法与创建属性是否有任何“陷阱”,尤其是在内存管理方面。我在其他堆栈答案中读到,您必须创建(弱)属性,否则我将不得不手动 [release]。我想知道这个 __weak 是否在这种情况下处理了这个问题?

谢谢!

最佳答案

使用相同的修饰符创建属性和实例变量大多是类似的。当您使用 ARC 时,您不必释放强属性或实例变量——它们将在对象被释放时释放。界面元素导出通常被创建为弱的,因为它们被 View 层次结构保留。你应该小心;如果你打算在某个时候从 View 层次结构中删除元素,你应该将修饰符更改为 strong 以确保它们被 View Controller 保留。顶层 socket 也应该创建得足够强,以确保它们在 nib 加载后保留。

关于ios - __weak IBOutlet ivars 需要发布和/或不良做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369488/

相关文章:

ios - 如何使用 SwiftUI 沿圆形路径绘制文本

ios - NSComparisonPredicate 用于空对多关系

ios - 是否有使用 crashlytics 从 ios 发送非致命崩溃的解决方案?

objective-c - Objective C ARC 释放而不分配变量

ios - Objective C 中的动态缓冲区(带 ARC)

objective-c - 使用 Storyboard segue 显示 ABPeoplePickerNavigationController

ios - 使用自定义 UICollectionViewLayout 的 UICollectionView 中的部分标题

ios - 如何确保IOS 5中使用ARC销毁单例?

iphone - 从 UITableView 选择单元格并转到另一个 UITableView

ios - 如何在没有任何代码的情况下使用 Storyboard segue 将 UIViewController 连接到 UIView?