我在Objective-C中的知識有點生疏,但我敢打賭,不可能將參數限制爲字符串的子集。我會建議是使用enums:
typedef enum {
FOOMy1stValue,
FOOMy2ndValue,
FOOMy3rdValue
} FOOEnum;
最後,基於枚舉的值獲取的常量字符串:
NSString *FOOGetStringFromEnum(FOOEnum e) {
static NSString *strings[] = {
@"My first value",
@"My second value",
@"My third value"
};
return strings[e];
}
如:
void FOORestrictedInput(FOOEnum e) {
NSLog(@"Restricted string: %@", FOOGetStringFromEnum(e));
}
這不是一個太好的解決方案,因爲您可以傳遞整數來代替枚舉的值,但至少該參數的類型將記錄您期望的內容。
另一種可能性是創建一個新的類,其實例將存儲字符串常量。這些實例將作爲參數而不是字符串傳遞。從理論上講,除了用作常量的類之外,還可以創建這個類的新實例,但與使用字符串相比,更容易出錯。
無論如何,我覺得這兩種解決方案都是不必要的開銷。我不擔心限制可傳值的值太多(至少不在Objective-C中 - 在某些其他語言中可能會更容易)。然而,由於我對你的背景知之甚少,這些都是一些可能的解決方案。
感謝您的指點!實際上,你所說的正是我想要做的:使參數類型文檔符合預期。 – 2012-07-23 16:10:27