nsstring - Objective-C Language Syntax - "Type Checking" Constant Strings -
cocoa , cocoatouch use string constants frequently, , i'm wondering if there syntax enforces (encourages?) specific set of strings method's argument.
for example, nspersistentstorecoordinator
's method -addpersistentstorewithtype:configuration:url:options:error:
takes 1 of 4 possible strings first argument.
these strings declared in nspersistentstorecoordinator.h
as
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
macro expands extern
plus goodies other platforms)
beyond (parameter)asserting within method, there way make sure xcode / clang / llvm encourages these 4 values?
short , long answer: no. method accepts pointer, can throw in there, , if pointer of right type (id or nsstring in case), clang happily allow it. if have own code want tell user method accept values, make clear in documentation , throw descriptive exception.
Comments
Post a Comment