gpt4 book ai didi

objective-c - 如何用各种类型的对象填充堆栈

转载 作者:行者123 更新时间:2023-12-03 18:02:08 24 4
gpt4 key购买 nike

使用 NSMutableArray ivar,我计划编写一个类似堆栈的类,并且应该能够从中检索各种类型的对象。

每当该堆栈由于几乎所有对象都已被检索而威胁要耗尽对象时,它应该通过从某种尽可能通用的“对象发射器”中获取新对象来自动将新对象推送到自身上。例如,应该有请求者类返回 NSImages 或 NSString 或任何其他可以想象的类型的实例,这些类型应该放在堆栈上,但必须事先以单独的方式处理每个类型。

将这些对象发射类“插入”到我的堆栈类中最简单的模式是什么?堆栈类不需要知道它必须处理的对象类型,这是一些“帮助器类”可能设置它的地方 - 但我不知道它们的位置在哪里。我尝试使用 NSClassFromString 进行动态创建,但感觉不太对劲。

最佳答案

NSMutableArray 能够存储任何对象。与 Java 中的数据结构存储特定类的实例的泛型集合不同,Cocoa 允许您向 NSArray 添加任何内容。因此,您的 pop 方法可以简单地删除数组的最后一个对象,检查大小是否小于某个阈值,然后从供应商类请求新对象。

例如:

- (NSObject *)pop {
NSObject *poppedObject = [mutableArray lastObject];
[mutableArray removeLastObject];
if ([mutableArray count] < SMALLEST_ALLOWABLE_STACK_SIZE) {
for (MYContentProvider *provider in [self contentProviders]) {
[mutableArray addObjectsFromArray:[provider fetchContent]];
}
}
return poppedObject;
}

关于objective-c - 如何用各种类型的对象填充堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5331543/

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