1

我为此忙了几个小时,但看不到头或尾。

我应该如何创建一个NS(Mutable)Dictionary可以让返回与发送方法类相同的类的类别。

样本

+(NSDictionary *)dictionaryWithAdditions:path error:(NSError**)error;

NSDictionary * dict = [NSDictionary dictionaryWithAdditions:path error:&error];

应该返回一个NSDictionary.

+(NSMutableDictionary *)dictionaryWithAdditions:path error:(NSError**)error;

NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithAdditions:path error:&error];

应该返回一个 NSMutableDictionary。

我不想返回一个id,以避免任何可能的警告等。

建议我应该如何通过错误管理在一个类别中创建它?

4

2 回答 2

0

返回时会收到什么警告id?无论如何,这就是标准init方法所做的。

您的方法可能类似于:

+ (id)dictionaryWithAdditions:path error:(NSError**)error;
{
     id dictionary = [[[self alloc] init] autorelease];

     // ... do something

     return dictionary;
}
于 2011-12-30T01:28:17.783 回答
0

您要么需要创建两种不同的方法(例如dictionaryWithAdditions:mutableDictionaryWithAdditions:),要么返回id(我建议后者)。类型系统不允许我们说“如果接收者静态类型为 NSDictionary,则为 NSDictionary,如果接收者静态类型为 NSMutableDictionary,则为 NSMutableDictionary,否则为错误”。

于 2011-12-30T00:04:34.853 回答