我更喜欢为所有视图控制器创建自定义视图。我在代码中通过对自定义视图使用弱引用来定义它,如下所示:
#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
属性具有保留引用。您的
view
和customView
可能不同步-因此,我很想将customView
定义为readonly
并将getter实现为- (CustomView *)customView
{
return (id)self.view;
}
关于ios - 具有自定义 View 和弱引用的UIViewController,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16173529/