我更喜欢为所有视图控制器创建自定义视图。我在代码中通过对自定义视图使用弱引用来定义它,如下所示:

#import "MyViewController.h"
#import "MyCustomView.h"

@interface MyViewController ()
@property (nonatomic, weak) MyCustomView *customView;
@end

@implementation MyViewController
- (void) loadView
{
    MyCustomView *view = [MyCustomView new];
    self.view = view;
    self.customView = view;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // work with custom view
    self.customView.tableView.delegate = self;
    ....
}

@end


这是弱引用的正确使用吗?应用程序是否崩溃或泄漏,还是会有其他问题?

最佳答案

在这种情况下,weak是可以的。您将CustomView分配给self.view(在UIViewController标头中定义为)

@property(nonatomic,retain) UIView *view;


因此view属性具有保留引用。

您的viewcustomView可能不同步-因此,我很想将customView定义为readonly并将getter实现为

- (CustomView *)customView
{
  return (id)self.view;
}

关于ios - 具有自定义 View 和弱引用的UIViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16173529/

10-13 09:21