Я написал следующий код Objective-C как часть курса iTunes в Stanford для программирования на iOS. Есть ли способы упростить этот код? Требование состоит в том, что этот метод возвращает nil, если набор пуст, а не пустой NSSet. Также требуется взять (id), а не NSArray, и что метод не сбрасывается независимо от того, какие значения передаются в него.Упрощение этого кода Objective-C для удобочитаемости
+ (NSSet *)variablesUsedInProgram:(id)program {
NSMutableArray *stack;
id variables;
NSMutableSet *setOfVariables;
if ([program isKindOfClass:[NSArray class]]) {
stack = [program mutableCopy];
int i = stack.count;
while (i--) {
if ([[stack objectAtIndex:i] isKindOfClass:[NSString class]]) {
if ([self isOperation:[stack objectAtIndex:i]]) {
[setOfVariables addObject:[stack objectAtIndex:i]];
}
}
}
}
if (setOfVariables.count > 0) {
variables = setOfVariables;
}
return variables;
}
ли это даже работает? 'setOfVariables' никогда не инициализируется. – Costique
Кроме того, в чем смысл создания изменчивой копии «программы», если вы никогда не изменяете ее содержимое (через 'stack'). – UIAdam