如何拥有一个对象并在运行时更改其类型



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

每个方法都指示它希望通过标志从该方法接收回来的数据类型。在这个例子中,让我们调用标志'objectType'。

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

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

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

例如。

-(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 使用工厂模式可能是正确的,但它对我来说太复杂了,无法在我拥有的时间内实现,所以会在将来的某个时候尝试

最新更新