我怎样才能拥有一个对象并在运行时更改它的类型

How can I have one object and change it's type at runtime

我有一个方法被 3 种不同的方法调用。

每个方法都表明它希望通过标志从该方法接收回哪种数据。在这个例子中,让我们调用标志 'objectType'.

'calledMethod' 需要查看 objectType 并基于此创建正确的对象。

然后 'calledMethod' 需要 return 它收到的相同对象类型,以便调用方法获得正确的对象类型。

我在下面包含了示例代码,我知道它不正确,但它让您了解我正在努力实现的目标。请注意,所有 3 个对象都有 'testInt' objectKey。

例如

-(NSObject *)calledMethod : (int)objectType
{
    NSObject *einStein;

    switch (objectType)
    {
        case 1: // this is an NSUserDefaults object
            einStein = [NSUserDefaults standardUserDefaults];
            break;
        case 2: // this is an PFUser object
            einStein = [PFUser currentUser];
            break;
        case 3: // this is a custom object
            einStein = [TestData personData];
            break;
        default:
            break;
    }

    int *testCnt = [einStein objectForKey@"testInt"];
    testCnt = testCnt++;
    [einStein setObject:testCnt forKey:@"testInt"];
    return einStein;
}

我认为 Sinisa 重新使用工厂模式可能是正确的,但是我当时实施起来太复杂了,所以以后会尝试