2011-02-23 82 views
0

希望有人能幫助我學習一些關於iOS編程中代表的新內容。如何從main-viewcontroller創建一個靜態委託?

我有一個「MainViewController」,這是第一個VC應用程序啓動時。我選擇了不同的UIImageView,選擇其中一個後,我推出了一個新的VC。我想用一個委託來處理modelChoice,因此所有其他viewControllers都可以監聽並根據用戶的選擇採取行動。

但是,這是否意味着我必須在每一個VC來的Alloc說,「MainViewController」的新實例?那是什麼解決方案?我如何創建(我認爲它被稱爲)靜態代表?

將是巨大的學習的.. 感謝分享..

回答

1

你可以讓你MainViewController爲單例類:

static MainViewController* ctrl = nil; 
+(MainViewController*) sharedInstance { 
    @synchronized(ctrl) { 
     if(!ctrl) { 
      ctrl = [[MainViewController alloc] init]; 
     } 
    } 

    return ctrl; 
} 

然後你可以從任何像這樣的類來訪問它: MainViewController sharedInstance]。

您還可以添加方法MainViewController像:

-(void) addListener:(NSObject<ListenerProtocol>*) listener; 

而且當你創建其他視圖控制器撥打:

[[MainViewController sharedInstance] addListener: newVC]; 
+0

嗨,馬克斯。感謝您的快速回復。你能否介紹一下下面的單例實現有什麼區別? [SINGLETON CLASS](http://iphone.galloway.me.uk/iphone-sdktutorials/singleton-classes/comment-page-1/#comment-639) – geforce 2011-02-24 08:51:35

+0

其實沒有區別。這是創建單身人士的標準方式。這是一個普通的類(使​​用ivars,屬性等),但它只有一個實例。 – Max 2011-02-24 09:23:44