рдиреАрд▓, рдиреАрд▓, NULL, NSNull рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рд╣реИ

рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ - рдХреБрдЫ рднреА рдирд╣реАрдВ - рди рдХреЗрд╡рд▓ рдПрдХ рджрд╛рд░реНрд╢рдирд┐рдХ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╡рд╛рджреА рдЗрдХрд╛рдИ рднреА рд╣реИ: рд▓реЛрдЧреЛрдВ рдХреЛ, рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рддрд░рд╣, рдЕрдХреНрд╕рд░ "рдЦрд╛рд▓реА" рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЧреИрд░ - рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдмреИрдВрдХ рдХрд╛рд░реНрдб рдкрд░ рдкреИрд╕реЗ рдХреА рдХрдореА рд╣реИред , рдХреЗ about:blank , рдмреНрд▓реИрдХ рд╣реЛрд▓ рдпрд╛ grep "${rootpswrd}" /etc/passwd ред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ " рдиреЛрдХреНрд╕рд┐рд╕реНрдЯреЗрдВрд╕ " рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди mnemonics рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рдЙрдирдореЗрдВ рд╕реЗ рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╕реБрдкрд░-рд▓реЛрдХрдкреНрд░рд┐рдп (рдкрд┐рдЫрд▓реЗ рдкрд╛рдВрдЪ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ) рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди, рд╣рдо рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдЖрдЧреЗ рдХреА рдЧрд░реНрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП) рднрд╛рд╖рд╛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реАред


рдПрдХреАрдХрд░рдг



рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдХрдИ рддрд░рд╣ рдХреЗ рдЕрд╕рд▓реА рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИрдВ ред рдЗрд╕рдХрд╛ рдХрд╛рд░рдг "рдмрд╣реБрд╕реНрддрд░реАрдп" рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рд╕реА рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдкреНрд░рддрд┐рдорд╛рди рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рд╕реНрдореЙрд▓рдЯреЙрдХ рджреЛрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреА рд╣реИред
C рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА ( рдЖрджрд┐рдо ) рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП NULL (рд╢реВрдиреНрдп) рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, NULL рдФрд░ 0 рджреЛрдиреЛрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рджреВрд╕рд░реЗ рд╕реЗ рдПрдХ рдореИрдХреНрд░реЛ рдЖрд╡рд░рдг рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ:
 #define NULL ((void *)0) 

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ NULL рдЙрдкрдпреЛрдЧ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ 0 рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд╣рд╛рдБ рд╢реВрдиреНрдп рдПрдХ рдмреАрдЬрдЧрдгрд┐рддреАрдп рдорд╛рди рд╣реИ:
 int c = b*a; if (c != NULL) { printf("Neither b nor a is equal to 0\n"); } 


рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА (рд╕реА рдореЗрдВ рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ) рдиреЗ рдЕрдкрдиреЗ рдкреВрд░реНрд╡рдЬреЛрдВ рдХреА рдХреБрдЫ рднреА рдирд╣реАрдВ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рднреА рд░реВрдкреЛрдВ рдХреЛ рдмрдЪрд╛рдпрд╛, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдФрд░ рдЬреЛрдбрд╝рдХрд░: nil ред nil рдПрдХ рдЕрд╢рдХреНрдд рд╡рд╕реНрддреБ рдХрд╛ рд╕реВрдЪрдХ рд╣реИ:
 #if !defined(nil) #define nil (id)0 #endif 

рдпрд╛рдиреА рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдпрд╣ NULL рдмрд░рд╛рдмрд░ NULL ред

рд╢рд╛рдпрдж рдлрд╛рдЙрдВрдбреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдХреЛрдИ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ рднрд╛рд╖рд╛ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдПрдХ рдФрд░ ( рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЪреМрдерд╛ ) рдХрд╛ рдкрд░рд┐рдЪрдп - NSNull рд╡рд░реНрдЧ, рдЬрд┐рд╕рдореЗрдВ рдПрдХрд▓ (рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдЕрд▓рд╛рд╡рд╛) рд╡рд┐рдзрд┐ +null рдЬреЛ NSNull рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рджреЗрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ: рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдЪрд╛рд░ рдирд┐рдВрджрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдлрд╛рдЙрдВрдбреЗрд╢рди рдПрдХ Nil рдореИрдХреНрд░реЛ ( nil рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛) рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдЯрд╛рдЗрдк Class рдХрд╛ рдПрдХ рд╢реВрдиреНрдп рд╕реВрдЪрдХ:
 #if !defined(Nil) #define Nil (Class)0 #endif 

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ Nil рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдЖрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ: рдХреЗрд╡рд▓ рдХреБрдЫ рдЧреАрдХ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рд╡реИрд╕реЗ рднреА, рдпрд╣рд╛рдБ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХреЛрдб рд╣реИ рдЬреЛ NSString рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдПрдХ рдирдИ рдХрдХреНрд╖рд╛ рдХреЛ рдЖрд░рдореНрдн рдХрд░рддрд╛ рд╣реИ, рдирд╛рдо рдХреЗ рд╕рд╛рде NSArray (рд╣рд╛рдБ, рдпрд╣ рдПрдХ рд▓рд╛рдирдд рдХреА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдиреАрдЪреЗ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг) рд░рдирдЯрд╛рдЗрдо рдореЗрдВ:
 #inlcude <objc/runtime.h> Class foo = objc_allocateClassPair([NSString class], "NSArray", 0); /*      NSArray  ,    Nil тАФ  */ if (Nil != foo) { int check = class_addMethod(foo, @selector(makeWorldBetter), (IMP)_makeWorldBetter, "v@:")); if (check) objc_registerClassPair(foo); } 


nil рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ



рдРрд╕реЗ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдПрдХ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ nil рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:
  1. рдХрднреА-рдХрднреА рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдзрд┐) рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, the -capitalizedStringWithLocale: NSString рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рдПрдХ рддрд░реНрдХ ( NSLocale рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓реЛрдХреЗрд▓ рд▓реЗрддреА рд╣реИ, рдпрд╛ nil - рдмрд╛рдж рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рд╕реНрдерд╛рдиреАрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреЗ рд╡рд┐рд╣рд┐рдд рд╡рд┐рдШрдЯрди (NFD) рдХреЛ рд▓реЛрдХрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрдерд╛рдиреАрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╡рд┐рдзрд┐ -capitalizedString рд╡рд┐рдзрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреА)ред
  2. рдкреНрд░рд╛рд░рдВрдн рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ "рдЦрд╛рд▓реА рд╣реЛрдирд╛" (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП):
     - (NSDictionary*)dictionaryForLicenseFile:(NSString *)path { NSData *licenseFile = [NSData dataWithContentsOfFile:path]; /* ┬л,     !┬╗ */ if (!licenseFile) return nil; return [self dictionaryForLicenseData:licenseFile]; } 

    рд╡реИрд╕реЗ, рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ -init* рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде -init* рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдкреНрд░рдерд╛, рдЬреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреАрдЪ рдЖрдо рд╣реИ, рдХреЛ рдЗрд╕рд╕реЗ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдорд╛рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА -alloc рд╡рд┐рдзрд┐ рдореЗрдВ рд╢реВрдиреНрдп рдкрд░ рд╕реЗрдЯ рдереЗ:
    ... рдЕрдиреНрдп рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА 0 рдкрд░ рд╕реЗрдЯ рд╣реИред



рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ (рдпрд╛рдиреА, nil ) рдХреА рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрддреНрддрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рд╣реА рд╣реЛрдЧрд╛:
  id foo = nil; int zero = [foo bar: @"Hello, Habr!"]; 

рдЕрдХреНрд╕рд░ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдХрд┐рдП рдЧрдП рдЪреЗрдХ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 /* In a galaxy far, far awayтАж */ if (foo != nil && [foo testValue: 0x90]) { тАж } /*         */ if ([foo testValue: 0x310403]) { тАж } 


рдХреБрдЫ рдиреМрд╕рд┐рдЦрд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЗрд╕ nil рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрддреЗ рд╣реБрдП, рдЗрд╕реЗ рдЧреИрд░-рд╢реВрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдореМрдЬреВрдж рд╡рд┐рдзрд┐ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝реЗрдВ рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ:
  /* ┬л  NSPersistentStoreCoordinator┬╗ ┬й Brad Cox & Tom Love */ NSData *signature = [NSString stringWithFormat: @"%lu", 0xCAFEBABE]; /*   тАФ  @catch  :   -bytes   NSString  */ bytes = [signature bytes]; 


рдФрд░ рдпрд╣ рдареАрдХ рд╣реИ, рдХреЗрд╡рд▓ рдиреМрд╕рд┐рдЦрд┐рдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╢рд┐рдХрд╛рд░ рдХрд░реЗрдВрдЧреЗ ...
рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдж рдЯреИрдЧрд░ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдмрдЧ рдХреА рдЦреЛрдЬ рдХреА , рдЗрд╕ рдмрдЧ рдиреЗ рдХрд┐рд╕реА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдФрд░ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдХреЛ .ttl рд▓рд┐рдП рдЕрдорд╛рдиреНрдп .lic рдлрд╝рд╛рдЗрд▓ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ .ttl ) рдХреЛ рдХреЗрд╡рд▓ .ttl рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рд╕реАрдорд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
рдХрд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХрднреА рдХреЛрдИ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред
рд╡реИрд╕реЗ, рд▓реЛрдХрдкреНрд░рд┐рдп AquaticPrime рд╡рд░реНрдЧ рдХрд╛ рдХреЛрдХреЛ рд╕рдВрд╕реНрдХрд░рдг (рдЬреЛ, рдЖрдорддреМрд░ рдкрд░, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ CoreFoundation рд╕рдВрд╕реНрдХрд░рдг) рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдерд╛ред



рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, nil рд╕рдорд╛рдирддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдордд рднреВрд▓рдирд╛: рдорд╛рдирдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдФрд░ (рдореИрдВ рд╢рд░реНрдд рд▓рдЧрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдХреБрдЫ) рдмрд╕ "рд╢реВрдиреНрдп" рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдХрдо рд╕реЗ рдХрдо +[NSArray arrayWithObjects:] рд▓реЗрдВ +[NSArray arrayWithObjects:] - рд╕реВрдЪреА рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ nil рд╕рд╛рде рддреАрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗрдВред рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг: +[NSString stringWithString:] , рдЬреЛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ nil рд╕рд╛рде рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдПрдХ рдЕрдкрд╡рд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

NSNull : рдХреБрдЫ рдирд╣реАрдВ рдпрд╛ рдХреБрдЫ рдФрд░?



NSNull рдХрд╛ рдЙрдкрдпреЛрдЧ рдлрд╛рдЙрдВрдбреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ NSArray рдпрд╛ NSDictionary рдЬреИрд╕реЗ рдорд╛рдирдХ рд╕рдВрдЧреНрд░рд╣ рдХреА рд╕реАрдорд╛ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╡реЗ nil рдорд╛рди рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред
NSNull NULL рдФрд░ nil рдкрд░ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрд╡рд░рдг рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЙрдиреНрд╣реЗрдВ Objective-C рдХрд▓реЗрдХреНрд╢рди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╢реВрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХрд╣реАрдВ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ: рдЕрдкрдиреЗ iOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд JSON рдлрд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ
 { "keys": ["X"], "command": "set_action_motion", "args": { "action": "vi_left_delete", "motion": null }, "context": [{"key": "setting.command_mode", "modes": [] }] } 

рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк JSON рдХреЛ "рд╣рд╛рде рд╕реЗ" рдкрд╛рд░реНрд╕ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдмрд▓реНрдХрд┐ рдПрдХ рддреИрдпрд╛рд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдЬреИрд╕реЗ JSONKit ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЬреЛ рдЗрд╕ рд╕рдордп рдЗрд╕реЗ рдорд╛рдирдХ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, args["motion"] рдХрд╛ рдореВрд▓реНрдп args["motion"] рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ , рдЕрд░реНрдерд╛рдд, null ! рдпрд╣ рдорд╛рди рдкрд╛рд░реНрд╕рд░ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк NSNull рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рдПрдЧрд╛ред

рдлрд┐рд░ рд╕реЗ 11001 рдмреА



рдЧреИрд░-рд╕рд╛рд░рд╛рдВрд╢ рдзреБрд░реА рддрд╛рд▓рд┐рдХрд╛:

рдкрджрдХрд▓рд╛рдИ рдХреА рдПрдХ рдЭрд┐рд▓рдорд┐рд▓рд╛рд╣рдЯ рдХреЗ рд╕рд╛рде ...Posnenie
00рд╢реВрдиреНрдп - рдпрд╣ рд╣рд░ рдЬрдЧрд╣ рд╢реВрдиреНрдп рд╣реИ
рд╢реВрдиреНрдп(рд╢реВрдиреНрдп *) режC рдирд▓ рд╕реВрдЪрдХ
рд╢реВрдиреНрдп(рдЖрдИрдбреА) режрдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдирд▓ рдкреЙрдЗрдВрдЯрд░
рд╢реВрдиреНрдп(рдХрдХреНрд╖рд╛) режрдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдХреНрд▓рд╛рд╕ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ
NSNull[NSNull рдЕрд╢рдХреНрдд]NSNull рдХреНрд▓рд╛рд╕ рд╕рд┐рдВрдЧрд▓рдЯрди - nil and null рдХреЗ рдКрдкрд░ рд░реИрдкрд░


рд╕рд╛рд╣рд┐рддреНрдп




PS рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдкрд╣рд▓реЗ-рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВ рдореВрд▓ рд▓реЗрдЦ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред рдореБрдЭреЗ рдмреЗрд╣рддрд░ рдХреА рдЙрдореНрдореАрдж рд╣реИред

Source: https://habr.com/ru/post/In165021/


All Articles