寫入[super loadView]或[super viewDidLoad]會發生什麼情況?我試圖刪除代碼,但堆棧溢出並進入無限循環。有人可以解釋爲什麼這是必需的嗎?爲什麼需要[super loadView]或[super viewDidLoad]?
回答
首先,當您覆蓋loadView
時,要手動創建您自己的視圖,您應該調用超類的實現NOT。這是因爲您將手動創建視圖,並使用這些而不是視圖,該視圖將由UIViewController
的實現創建。 (見loadview
documentation。)
但是當你重寫viewDidLoad
,你的確應該調用父類的實現。這是因爲UIViewController
的實現viewDidLoad
做了一些內部簿記,所以你想運行你自定義的viewDidLoad
代碼除了之外還有超類。
但即使在使用loadView時,我們也需要重寫超類。你提到過我們不需要重載loadView方法。你能解釋爲什麼嗎? @yuji –
呵呵??我沒有說「我們不[原文如此]需要重寫loadView方法。」我說**如果你在一個子類中實現'loadView',那麼你可能不需要調用超類的實現。請閱讀我鏈接到的文檔以獲取詳細信息。 – yuji
謝謝yuji .... –
它從您的超類中調用該方法。讓我們說它的NSObject。這些方法的名稱解釋如下: loadView是加載視圖的NSObject方法,viewDidLoad是處理視圖已加載的NSObject方法...沿着這些行 該視圖控制器中的方法本身「viewDidLoad」,也許「的loadView」沒有代碼,做上述...它只是定製,因爲你不能修改原始的.m方法...
要找出你的超去.h文件中:
@interface MyViewController : MySuperClass //thats it!
在你開始把UI放在它之前,底層類需要做一些自己的記賬工作。在Android中,相應的應用程序實際上會通過拋出一個你沒有叫的超優先例外來故意崩潰。
- 1. ViewDidLoad super
- 2. 爲什麼super不需要分配?
- 3. 我是否需要爲NSObject調用[super init]或[super initWithCoder]等等
- 4. 爲什麼我們在每個viewDidLoad方法中使用[super viewDidLoad]?
- 5. 可以調用[super loadView]嗎?
- 6. 爲什麼我需要在iOs中使用[super%methodname%]?
- 7. 爲什麼「[self class] == [super class]」?
- 8. 爲什麼classmethod的super需要第二個參數?
- 9. Python super()參數:爲什麼不是super(obj)?
- 10. 應該從loadView中調用[super loadView]還是不是?
- 11. 它在我的UIViewController中放置[super viewDidLoad]有什麼區別嗎?
- 12. 什麼是[super awakeFromNib];用於?
- 13. super()方法做什麼?
- 14. 什麼時候需要從構造函數調用`super`?
- 15. 別名self = super(...).__ new __(...)?爲什麼?
- 16. 這是爲什麼在python super().__ init __(** kwargs)
- 17. 爲什麼System.out.println(super)不允許?
- 18. 爲什麼python super不接受實例?
- 19. viewDidLoad(),LoadView()
- 20. 爲什麼我們不應該在創建自定義View控制器時在loadView中調用[super loadview]?
- 21. 在java中super和super()有什麼不同?
- 22. 行爲super`
- 23. 爲什麼在Objective-C中,我們使用self = [super init]而不是[super init]?
- 24. loadView和viewDidLoad有什麼區別?
- 25. 爲什麼要調用super類的overriden方法?
- 26. 爲什麼要在實體類中添加super()?
- 27. 爲什麼要在構造函數中調用super()?
- 28. 如何以及爲什麼要在代碼中使用SUPER?
- 29. OnClickListener super
- 30. viewDidLoad中和的loadView問題
'但**堆棧溢出** s' - 哈哈。這是表達你的意圖嗎? –
:):)............ –