我可以编写如下代码吗?它似乎有效,但我想确保它是允许/安全的:
// menu is a NSMenu*
for (NSMenuItem *item in [menu itemArray]) {
if (some condition) {
[menu removeItem:item];
}
}
答案 0 :(得分:0)
如果它没有立即抛出异常(因为在枚举它时直接修改数组)那么它可能没问题。 NSMenu
可能会给你一个内部数组的副本(假设它的项目保留在NSArray
中)。
但为了确保安全,您可能需要分两步完成此操作。创建另一个数组来保存要删除的项目,然后枚举那个并执行删除:
NSMutableArray * itemsToRemove = [NSMutableArray array];
for( NSMenuItem *item in [menu itemArray] ){
if( some condition ){
[itemsToRemove addObject:item];
}
}
for( NSMenuItem * item in itemsToRemove ){
[menu removeItem:item];
}
答案 1 :(得分:0)
仅供记录:
for (int i = menu.itemArray.count - 1; i >= 0; --i)
{
if( some condition for index i ){
[menu removeItemAtIndex:i];
}
}