рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ -
рдХреБрдЫ рднреА рдирд╣реАрдВ - рди рдХреЗрд╡рд▓ рдПрдХ рджрд╛рд░реНрд╢рдирд┐рдХ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╡рд╛рджреА рдЗрдХрд╛рдИ рднреА рд╣реИ: рд▓реЛрдЧреЛрдВ рдХреЛ, рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рддрд░рд╣, рдЕрдХреНрд╕рд░ "рдЦрд╛рд▓реА" рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХреЗ
рдЧреИрд░ -
рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ, рдХреНрдпрд╛ рдпрд╣ рдмреИрдВрдХ рдХрд╛рд░реНрдб рдкрд░ рдкреИрд╕реЗ рдХреА рдХрдореА рд╣реИред , рдХреЗ
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
рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ:
- рдХрднреА-рдХрднреА рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝рдВрдХреНрд╢рди (рд╡рд┐рдзрд┐) рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рднреА рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, the
-capitalizedStringWithLocale:
NSString
рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рдПрдХ рддрд░реНрдХ ( NSLocale
рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ) рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд▓реЛрдХреЗрд▓ рд▓реЗрддреА рд╣реИ, рдпрд╛ nil
- рдмрд╛рдж рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп, рд╕реНрдерд╛рдиреАрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреЗ рд╡рд┐рд╣рд┐рдд рд╡рд┐рдШрдЯрди (NFD) рдХреЛ рд▓реЛрдХрд▓ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрдерд╛рдиреАрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╡рд┐рдзрд┐ -capitalizedString
рд╡рд┐рдзрд┐ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧреА)ред
- рдкреНрд░рд╛рд░рдВрдн рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ "рдЦрд╛рд▓реА рд╣реЛрдирд╛" (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП):
- (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
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрддреЗ рд╣реБрдП, рдЗрд╕реЗ рдЧреИрд░-рд╢реВрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдореМрдЬреВрдж рд╡рд┐рдзрд┐ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдкрдХрдбрд╝реЗрдВ рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ:
NSData *signature = [NSString stringWithFormat: @"%lu", 0xCAFEBABE]; 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 |
---|
0 | 0 | рд╢реВрдиреНрдп - рдпрд╣ рд╣рд░ рдЬрдЧрд╣ рд╢реВрдиреНрдп рд╣реИ |
рд╢реВрдиреНрдп | (рд╢реВрдиреНрдп *) реж | C рдирд▓ рд╕реВрдЪрдХ |
рд╢реВрдиреНрдп | (рдЖрдИрдбреА) реж | рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдирд▓ рдкреЙрдЗрдВрдЯрд░ |
рд╢реВрдиреНрдп | (рдХрдХреНрд╖рд╛) реж | рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдХреНрд▓рд╛рд╕ рдЕрд╢рдХреНрдд рд╕реВрдЪрдХ |
NSNull | [NSNull рдЕрд╢рдХреНрдд] | NSNull рдХреНрд▓рд╛рд╕ рд╕рд┐рдВрдЧрд▓рдЯрди - nil and null рдХреЗ рдКрдкрд░ рд░реИрдкрд░ |
рд╕рд╛рд╣рд┐рддреНрдп
PS рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдкрд╣рд▓реЗ-рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╛рдЗрди рдирд╣реАрдВ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдореИрдВ рдореВрд▓ рд▓реЗрдЦ рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред рдореБрдЭреЗ рдмреЗрд╣рддрд░ рдХреА рдЙрдореНрдореАрдж рд╣реИред