2013-05-27 45 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