gpt4 book ai didi

ios - 这是运行通用方法的正确方法吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:06:47 26 4
gpt4 key购买 nike

我有这个方法应该设置对象的名称,但对象可以属于 3 个类,A、B 和 C。

如果我只是这样做

[object setName: @"new name"];  //at this point I am treating object as of type id

Xcode会报错有多个名为“setName”的方法,那我就是这样做的

  if ([object isKindOfClass:[ClassA class]]) {
[(ClassA *)object setName:newName];
} else
if ([object isKindOfClass:[ClassB class]]) {
[(ClassB *)object setName:newName];
} else
[(ClassC *)object setName:newName];
}

但这对我来说似乎很蹩脚。

我试图通过使用类似这样的东西来愚弄 Xcode

    [(typeof(object))object setName:newName];

但 Xcode 也不喜欢它,可能是因为 typeof(object) 正在返回 id 而我们又回到了原点。同样的错误。

有什么更好/优雅的方法可以做到这一点?

最佳答案

使用 A、B 和 C 类都符合的协议(protocol)。

@protocol MyProtocol <NSObject>
@required
- (void)setName:(NSString *)name;
@end

然后

id<MyProtocol> object = ...
[object setName:newName];

关于ios - 这是运行通用方法的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866997/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com