gpt4 book ai didi

ios - 转换到类的通用类型。在 Objective-c 中实现

转载 作者:行者123 更新时间:2023-11-28 22:15:10 25 4
gpt4 key购买 nike

我正在尝试在 Objective-C 中实现一个简单的观察者/监听器模式。

我有两个 NSMutableArray,其中一个具有正在监听的不同类。这些都是通用类型 (id)。我还有一个数组,其中包含不同类的名称(如 NSStrings)。

我如何获取泛型类型,转换回原始类并向该类发送消息?

我试过类似的方法,但没有成功:

// _observers_type contains the names for the classes, _observers are the generic types.
- (void)notifyObservers;
{
for (int i = 0; i < [_observers count]; i++) {
NSString *classNameStr = [_observers_type objectAtIndex:i];
Class theClass = NSClassFromString(classNameStr);
(theClass)[[_observers objectAtIndex:i] triggerNotify];
}
}

另请注意,这些方法不是实例方法。我想用这种模式更新 View 等。

最佳答案

您可以向声明为 id 的对象发送消息。

for (id object in observers)
[object triggerNotify];

您只能对编译时已知的类型使用强制转换,因此您所做的不会起作用,也无法起作用。但是你可以向一个 id 发送任何消息——只要确保这个 id 确实响应了消息。所以这样写是安全的

for (id object in observers)
if ([object respondsToSelector:@selector (triggerNotify)])
[object triggerNotify];

存储类的名称是没有意义的,因为如果你想知道类,你可以使用[object class]。

关于ios - 转换到类的通用类型。在 Objective-c 中实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21893177/

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