#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;
这是我的UCRootViewController的声明,它应该管理这些子viewControllers.他后来也将成为他们的代表,以便在何时应该显示一个控制器时进行处理.
rootViewController在UIAppDelegate中保持强大,并将一直保持活动状态.
那么使这些子视图控制器变弱是否正确?我不是100%肯定,但据我所知,当没有强指针指向它们时,弱指针会被释放.因为根很强大,让它们变弱是正确的,对吗?
#import <UIKit/UIKit.h> @class UCRootViewController; @interface UCOverviewController : UIViewController @property (weak,nonatomic) UCRootViewController *rootviewController;
这是我的一个子viewControllers的标题.它们有一个指向(稍后)委托rootviewController的弱指针.是否足以声明@class UCRootviewController使它们调用委托方法?我甚至需要这个吗?
谢谢
编辑:我刚读了a nice article about ViewControllers和段落:
Always use high-quality view controller containers or
+[UIViewController presentModalViewController:animated:] to display view controllers in your application. If you need to keep a reference
to a view controller somewhere,use a weak reference,except if you
really want it to stay alive longer for caching purposes. In such
cases,be sure to correctly respond to low-memory conditions.
它说使用弱参考,你对此有何看法?
解决方法
您应该将这些属性设置为strong,以确保您的其他viewControllers不会以您不希望的方式取消分配.
如果你将它们推入导航堆栈就可以了,因为导航堆栈会自动指向它们.但是如果你只想在rootViewController中将他们的视图添加为子视图,那么你需要确保这些属性是强大的.
当没有强指针时,对象会被释放.由于没有强大的指针指向其他viewControllers,因此它们将被取消分配.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。