ios – 我的sub-viewControllers的弱或强属性?

#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.

它说使用弱参考,你对此有何看法?

解决方法

强指针只与你的rootViewController绑定.这并不意味着它将自动强大指向rootViewController中的其他viewControllers.

您应该将这些属性设置为strong,以确保您的其他viewControllers不会以您不希望的方式取消分配.

如果你将它们推入导航堆栈就可以了,因为导航堆栈会自动指向它们.但是如果你只想在rootViewController中将他们的视图添加为子视图,那么你需要确保这些属性是强大的.

当没有强指针时,对象会被释放.由于没有强大的指针指向其他viewControllers,因此它们将被取消分配.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...