我在Objective-C代碼中編寫了這段代碼,作爲斯坦福大學iOS編程的iTunes U課程的一部分。有什麼方法可以簡化這段代碼嗎?要求是這個方法返回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 2012-02-05 07:22:02
另外,如果你從來沒有真正改變它的內容(通過'stack'),那麼創建'program'的可變拷貝有什麼意義。 – UIAdam 2012-02-05 07:41:16