2013-05-27 66 views
-2

使用+(ID)函數名的我想在我的項目使用的單。因此,對於這個我看了一下這一點,並找到這樣的事情:什麼是IOS

@interface MyManager : NSObject 
{ 
    NSString *someProperty; 
} 

@property (nonatomic, retain) NSString *someProperty; 

+ (id)sharedManager; 

我知道我們在代碼中使用這個共享一些數據。現在我的問題是+(id)的含義和我們稱之爲的含義以及它的用途

+0

爲什麼我的問題得到了投票。你能指出原因嗎? –

回答

1

+表示類方法,與更常見的實例方法相反,它們以-開頭。 (id)表示此方法返回一個Objective-C對象。

2

id裝置以一個Objective-C的對象,其中所述類是未知的參考。爲了您的例子中,你也可以使用:

+ (MyManager *)sharedManager; 

請注意,您不使用*標誌id

+這意味着它是一個類方法:您調用類如[NSString stringWithFormat:@"%d", 1]的方法。

-是一個實例方法,你在一個類的對象實例調用一個方法,像「[myString的長度]」

3
  1. 使用+(id)可以確保我們不必alloc initSingleton Class再次並獲得,因爲+表示它是一種靜態方法。

  2. +(id)表示方法+ (id)sharedManager;return type可以是任何對象。

  3. 裏面的方法+ (id)sharedManager;我們必須檢查該對象是否未初始化,如果它的Singleton instance已被創建爲 - if(!sharedInstance){ //Alloc init logic for singleton }

+0

我們可以將id類型更改爲自己的類名稱嗎? –

+0

是的,我們可以.... –

+0

感謝有價值的答案:) –

1

除了fzwo響應;通常當類方法簽名以shared開頭時,這意味着此類符合Singleton pattern。單例對象只有一個本身的實例。當你使用[UIApplication sharedApplication]時,你可以看到一個例子,這將返回單例應用程序實例。

+0

請注意,雖然這只是一個命名約定,你仍然需要以這種方式進行編程。 – fzwo

+0

@fzwo是的,我知道,這就是爲什麼我把這個詞通常':) – Mat

+2

我知道_you_知道:) – fzwo