Cocoa和CocoaTouch经常使用字符串常量,我想知道是否存在强制(鼓励?)一组特定字符串作为方法参数的语法。
例如,NSPersistentStoreCoordinator
的方法-addPersistentStoreWithType:configuration:URL:options:error:
会为第一个参数选择四个可能的字符串之一。
这些字符串在NSPersistentStoreCoordinator.h
中声明为
COREDATA_EXTERN NSString * const NSSQLiteStoreType NS_AVAILABLE(10_4, 3_0);
COREDATA_EXTERN NSString * const NSXMLStoreType NS_AVAILABLE(10_4, NA);
COREDATA_EXTERN NSString * const NSBinaryStoreType NS_AVAILABLE(10_4, 3_0);
COREDATA_EXTERN NSString * const NSInMemoryStoreType NS_AVAILABLE(10_4, 3_0);
(FWIW,COREDATA_EXTERN
宏扩展为extern
以及其他平台的一些好东西)
在方法中超越(参数)断言,有没有办法确保Xcode / clang / LLVM只鼓励这四个值?
答案 0 :(得分:1)
简短回答:不。该方法接受一个指针,所以你基本上可以扔任何东西,如果指针是正确的类型(在这种情况下是id或NSString),Clang会很乐意允许它。如果您有自己的代码,您希望告诉用户该方法只接受某些值,请在文档中明确说明并抛出描述性异常。