MJB*_*MJB 9 cocoa-touch delegates properties uiviewcontroller ios
#import <UIKit/UIKit.h>
#import "UCMapviewController.h"
#import "UCMenuviewController.h"
#import "UCOverviewController.h"
@interface UCRootViewController : UIViewController
@property (weak, nonatomic) UCMapviewController *mapviewController;
@property (weak, nonatomic) UCMenuviewController *menuviewController;
@property (weak, nonatomic) UCOverviewController *overviewController;
Run Code Online (Sandbox Code Playgroud)
这是我的UCRootViewController的声明,它应该管理这些sub-viewControllers.他后来也将成为他们的代表,以便在何时应该显示一个控制器时进行处理.
rootViewController在UIAppDelegate中保持强大,并将一直保持活动状态.
那么使这些子视图控制器变弱是否正确?我不是100%肯定,但据我所知,当没有强指针指向它们时,弱指针会被释放.因为根很强大,让它们变弱是正确的,对吗?
#import <UIKit/UIKit.h>
@class UCRootViewController;
@interface UCOverviewController : UIViewController
@property (weak, nonatomic) UCRootViewController *rootviewController;
Run Code Online (Sandbox Code Playgroud)
这是我的一个子viewControllers的标题.它们有一个指向(稍后)委托rootviewController的弱指针.是否足以声明@class UCRootviewController让他们调用委托方法?我甚至需要这个吗?
谢谢
编辑:我刚读了一篇关于ViewControllers和文章的好文章:
始终使用高质量的视图控制器容器或+ [UIViewController presentModalViewController:animated:]来显示应用程序中的视图控制器.如果你需要在某处保持对视图控制器的引用,请使用弱引用,除非你真的希望它为了缓存目的而保持更长时间.在这种情况下,请确保正确响应低内存条件.
它说使用弱参考,你对此有何看法?
强指针只与rootViewController绑定.这并不意味着它将自动强大指向rootViewController中的其他viewControllers.
您应该将这些属性设置为strong,以确保您的其他viewControllers不会以您不希望的方式取消分配.
如果你将它们推入导航堆栈就可以了,因为导航堆栈会自动强化它们.但是,如果您只是将他们的视图添加为rootViewController中的子视图,那么您需要确保这些属性很强大.
当没有强指针时,对象会被释放.由于没有强大的指针指向其他viewControllers,因此它们将被取消分配.
| 归档时间: |
|
| 查看次数: |
4877 次 |
| 最近记录: |