簡體   English   中英

創建自定義UIView時,應該為該自定義UIView創建實例變量還是只使用參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM