2011-12-05 28 views
0

有沒有辦法創建「Class」網點?靜態IBOutlets?

這個想法是從一個筆尖實例化這些插口一次,並與所有實例分享。

我的主要疑問是如何搭配

@property (...) IBOutlet ... 
static ... 
@syntetize/@dynamic ... 

回答

1

使用單例模式。

單例實例可以以正常方式擁有您的IBOutlets,並且它們將只創建一次並共享。

+0

我認爲真正的靜態網點的簡短答案是否定的。但最乾淨的方法是單身。 – Rivera

+0

你是對的,因爲沒有類屬性的概念。而IBOutlet是一個財產。 – Sulthan

0

我不知道這是一個好主意,但你可以通過定義每個實例setFoo/foo的方法來獲取您正在尋找的效果對付共同的價值...

可以聲明@property (...) IBOutlet foo和定義:

static id sharedFoo; 

-(void)setFoo:(id)newFoo { 
    sharedFoo = newFoo; 
} 

-(id)foo { 
    return sharedFoo; 
} 

這可能不是一個好主意,因爲它是不是所有的明顯你做了什麼,一個「如果你騙了電腦,它會得到你」這句古老的諺語可能會發揮作用。

+0

問題是setFoo和foo應該用「+」而不是「 - 」來聲明。 – Rivera

+0

我們確定嗎?這聽起來像他想調用一個實例方法來控制一個「類變量」 – Stripes