1

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 只鼓励这四个值?

4

1 回答 1

1

简短而冗长的回答:不。该方法接受一个指针,因此您基本上可以在其中抛出任何东西,并且如果指针的类型正确(在这种情况下为 id 或 NSString ),Clang 将很乐意允许它。如果您有自己的代码想要告诉用户该方法将只接受某些值,请在文档中明确说明并引发描述性异常。

于 2013-05-19T15:52:20.393 回答