[英]when creating a custom UIView should you create an instance variable for that custom UIView or just use the argument
我不是全職iOS開發人員,因此如果確實很明顯,請為這個問題辯解。 我有一個名為MenuHeader的模型,並創建了一個名為MenuHeaderView的自定義UIView。 我有這樣的方法:
在MenuHeaderView.m中
-(id) initWithFrame:(CGRect)frame menuHeader:(MenuHeader *)menuHeader
{
self = [self initWithFrame:frame];
if (self) {
_menuHeader = menuHeader; // <- here's the part I'm asking about
NSLog(@"here is menu header depth: %i", _menuHeader.depth);
NSLog(@"here is my header depth as argument %@", menuHeader.depth);
通常,我通常創建一個名為_menuHeader的實例變量,然后將其分配給initWithFrame。 我想我只可以處理參數menuHeader,但我總是前者這樣做。 這是不必要的嗎? 是否有任何理由只使用menuHeader參數? 我認為這只是樣式,我更喜歡這個想法,這就是我們要顯示的模型的局部instanceVariable? 兩種不同方式有什么不同?
感謝任何幫助/見解
實例變量的目的是在以后使用它,以便在其他方法中使用,或(如果通過訪問器公開)供其他對象訪問。
如果你不需要那么-那就是,如果你輸入的使用menuHeader
參數是純粹的地方這個init
方法-你不應該使用一個實例變量,因為它是沒有意義的。
但是, menuHeader
-如果您需要此傳入的menuHeader
參數的值保持 menuHeader
,以便以后通過其他方法訪問-那么您應該使用實例變量,因為傳入的menuHeader
參數是純本地的,並且將當init
方法完成時,將死亡(超出范圍)。
通常,編寫自己的init
方法的原因恰恰是為了接受參數並將其分配給實例變量,這就是為什么我們經常看到這種模式的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.