#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;
다음은 이러한 하위 viewController를 관리해야하는 UCRootViewController의 선언입니다. 그는 나중에 하나의 컨트롤러가 표시되어야하는지 여부를 처리 할 대리인이됩니다.내 sub-viewController에 약하거나 강한 속성이 있습니까?
rootViewController는 UIAppDelegate에서 강하게 유지되며 항상 활성 상태로 유지됩니다.
하위 뷰 컨트롤러를 약하게 만드는 것이 맞습니까? 100 % 확신 할 수는 없지만 포인터를 가리키는 포인터가 없을 때 weak 포인터가 할당 취소된다는 것을 이해하는 한. 근원이 강할수록 약 해지는 것이 맞습니다. 맞습니까?
#import <UIKit/UIKit.h>
@class UCRootViewController;
@interface UCOverviewController : UIViewController
@property (weak, nonatomic) UCRootViewController *rootviewController;
내 하위 viewController 중 하나의 헤더입니다. 그들은 (나중에) delegate rootviewController에 약한 포인터를 가지고있다. @class UCRootviewController
이 위임 메서드를 호출하도록 선언하는 것으로 충분합니까? 나는 이것을 필요로 할까?
감사
편집 : 난 그냥 a nice article about ViewControllers 및 통과 읽어
항상 높은 품질의 뷰 컨트롤러의 용기 또는 +를 사용을 [UIViewController에 presentModalViewController : 애니메이션 :] 응용 프로그램에서 뷰 컨트롤러를 표시 . 보기 컨트롤러 어딘가에 참조 번호 을 유지해야하는 경우 이 캐싱을 위해 더 오래 살아 남기를 원한다면 약한 참조를 사용하십시오. 이러한 경우에는 메모리 부족 상태에 올바르게 응답해야합니다.
약한 참조를 사용합니다. 이에 대한 의견은 무엇입니까?
약한 참조는 ViewController에 강력하게 사용되는 컨테이너를 사용할 때 사용합니다. 내 답변에 썼을 때, 예를 들어 내비게이션 컨트롤러를 사용할 때 약한 참조를 사용하면 문제가 없습니다. 그러나 당신이 현재의 VC의 뷰에 그들의 뷰를 서브 뷰로 추가했기 때문에 컨트롤러를 주변에 유지하고자 할 때, 강한 포인터를 사용할 필요가 있습니다. 그렇지 않으면 그들은 미리 할당이 해제 될 것입니다. –
대단히 감사합니다. – MJB