рд╕реНрд╡рд┐рдлреНрдЯ 5.1 - рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ?



рд╕реНрд╡рд┐рдлреНрдЯ 5.0 рдПрдХреНрд╕рдХреЛрдб 10.2 рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдЬрд╛рд░реА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЦрдмрд░ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЙрдореНрдореАрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рдХреА рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд┐рд░рддрд╛ рд╣реИ , рдЬреЛ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдХрд┐рд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рд╡реЗ рдмрдирд╛рдП рдЧрдП рдереЗред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд╕реНрд╡рд┐рдлреНрдЯ 5.0 рдореЗрдВ рдорд┐рд▓рд╛ рдПрдмреАрдЖрдИ рд╕реНрдерд┐рд░рддрд╛ , рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИ: рдПрдмреАрдЖрдИ рд╕реНрдерд┐рд░рддрд╛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рд╕реНрд╡рд┐рдлреНрдЯ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреА рд╣реИ, рдФрд░ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд┐рд░рддрд╛ред

рдЗрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╡рд╛рдЪрд╛рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реБрдзрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЙрди рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рдПрдВрдЧреЗ, рддрд╛рдХрд┐ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рджреЗрдЦ рд╕рдХреЗрдВред

рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕реНрд╡


SE-0068 рд╕реНрд╡ рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдХрд┐ рдпрд╣ рд╡рд░реНрдЧреЛрдВ, рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдЧрдгрдирд╛ рдХреЗ рднреАрддрд░ рд╡рд╛рд▓реЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рд░рдирдЯрд╛рдЗрдо рдкрд░ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд╕рдЯреАрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

class NetworkManager { class var maximumActiveRequests: Int { return 4 } func printDebugData() { print("Maximum network requests: \(NetworkManager.maximumActiveRequests).") } } 

рдпрд╣рд╛рдБ рд╣рдо NetworkManager рд╡рд░реНрдЧ рдХреЗ рдЕрдВрджрд░ рд╕реНрдереИрддрд┐рдХ рдЧреБрдг рдХреЛ рдЕрдзрд┐рдХрддрдордЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PrintDebugData () рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрдм рддрдХ рдЬрдм рддрдХ рд╣рдо NetworkManager рд╕реЗ рд╡рд╛рд░рд┐рд╕ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗ:

 class ThrottledNetworkManager: NetworkManager { override class var maximumActiveRequests: Int { return 1 } } 

рдЗрд╕ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рдореЗрдВ, рд╣рдо рдЕрдзрд┐рдХрддрдордЕрдиреБрдХреВрд▓рд┐рдд рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЕрдм рдпрд╣ рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдкреНрд░рд┐рдВрдЯрдбреНрдпреВрдЧрдбреЗрдЯрд╛ () рдХрд╣рддреЗ рд╣реИрдВ , рддреЛ рдпрд╣ рдореВрд▓ рд╡рд░реНрдЧ рд╕реЗ рдореВрд▓реНрдп рдХреЛ рдХрдо рдХрд░ рджреЗрдЧрд╛:

 let manager = ThrottledNetworkManager() manager.printDebugData() 

рдпрд╣рд╛рдВ рд╣рдореЗрдВ 4 рдХреЗ рдмрдЬрд╛рдп 1 рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдпрд╣рд╛рдВ рдмрдЪрд╛рд╡ SE-0068 рдЖрддрд╛ рд╣реИ: рд╣рдо рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдпрдВ (рд░рд╛рдЬрдзрд╛рдиреА 'рдПрд╕' рдХреЗ рд╕рд╛рде) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддреЛ рдЕрдм рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓ рд╡рд░реНрдЧ рдХреЗ PrintDebugData () рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

 class ImprovedNetworkManager { class var maximumActiveRequests: Int { return 4 } func printDebugData() { print("Maximum network requests: \(Self.maximumActiveRequests).") } } 

рдпрд╣реА рд╣реИ, рд╕реНрд╡ рдЙрд╕реА рддрд░реАрдХреЗ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдпрд╣ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред

рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдЪреЗрддрд╛рд╡рдиреА рдХреЛрдИ рдирд╣реАрдВ


рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рдХреЛ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЧрдгрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдХреБрдЫ рдФрд░ рдХреЛрдИ рдирд╣реАрдВ ред рдпрд╣ рднреНрд░рдо рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЕрдЧрд░ рд╣рдо рдЕрдкрдиреА рдЦреБрдж рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рдореЗрдВ рд▓рдкреЗрдЯреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 enum BorderStyle { case none case solid(thickness: Int) } 

рдЧреИрд░-рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рдм рдХреБрдЫ рд╕рд╛рдл рд╣реИ:

 let border1: BorderStyle = .none print(border1) 

рдпрд╣ "рдХреЛрдИ рдирд╣реАрдВ" рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░реЗрдВрдЧреЗ:

 let border2: BorderStyle? = .none print(border2) 

рдирд┐рд▓ рдпрд╣рд╛рдБ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рдХрд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ .none рдХрд╛ рдЕрд░реНрде рд╣реИ рд╡реИрдХрд▓реНрдкрд┐рдХ рдЦрд╛рд▓реА рд╣реИ , рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ BorderStyle.none рдХреЗ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИред
рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреА:
"рдЖрдк 'Opt..one' рдорддрд▓рдм рд╣реИ рдорд╛рди рд▓реЗрдВ; рдХреНрдпрд╛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп 'BorderStyle.none' рд╕реЗ рдорддрд▓рдм рдерд╛? "
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдЙрд╕рдХреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реБрдЪрд╛рд░реВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╡реИрдХрд▓реНрдкрд┐рдХ рдФрд░ рдЧреИрд░-рд╡реИрдХрд▓реНрдкрд┐рдХ рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдирд╛


рд╕реНрд╡рд┐рдлреНрдЯ рд╡реИрдХрд▓реНрдкрд┐рдХ / рдЧреИрд░-рд╡реИрдХрд▓реНрдкрд┐рдХ рдкрд╛рда рдФрд░ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рдкрд░ рд╕реНрд╡рд┐рдЪ / рдХреЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдЧрдгрдирд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд╣реАрдВред

рдЕрдм рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рдореЗрдВ рд╣рдо рдПрдиреНрдпреВрдорд░реЗрд╢рди-рд╡реИрдХрд▓реНрдкрд┐рдХ рдФрд░ рдЧреИрд░-рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдорд┐рд▓рд╛рди рдХреЗ рд▓рд┐рдП рд╕реНрд╡рд┐рдЪ / рдХреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 enum BuildStatus { case starting case inProgress case complete } let status: BuildStatus? = .inProgress switch status { case .inProgress: print("Build is startingтАж") case .complete: print("Build is complete!") default: print("Some other build status") } 

рд╕реНрд╡рд┐рдлреНрдЯ рдЧреИрд░-рд╡реИрдХрд▓реНрдкрд┐рдХ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдЧрдгрдирд╛ рдХреЛ рдореИрдк рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдФрд░ "рдмрд┐рд▓реНрдб рд╢реБрд░реВ рд╣реЛ рд░рд╣рд╛ рд╣реИ ..." рдпрд╣рд╛рдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЖрджреЗрд╢рд┐рдд рд╕рдВрдЧреНрд░рд╣ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ


рдПрд╕рдИ -0240 рдиреЗ рдЖрджреЗрд╢рд┐рдд рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджрд┐рдпрд╛, рд╕рд╛рде рд╣реА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдореА рддреБрд▓рдирд╛ рдкрд░рд┐рдгрд╛рдо рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдпрд╣ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдкреА рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдПрдХ рдЯреЗрдмрд▓рд╡реНрдпреВ рдореЗрдВ рдЬрдЯрд┐рд▓ рд╕рдВрдЧреНрд░рд╣ рд╣реИрдВ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдореВрд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рд░рд▓ рд╣реИ - рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рдПрдХ рдирдИ рд╡рд┐рдзрд┐ рдЕрдВрддрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ (:) рд╕реЗ , рдЬреЛ рджреЛ рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣реЛрдВ рдХреЗ рдмреАрдЪ рдХреЗ рдЕрдВрддрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдХреМрди рд╕реЗ рддрддреНрд╡ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдФрд░ рдХреМрди рд╕рд╛ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕реА рднреА рдСрд░реНрдбрд░ рдХрд┐рдП рдЧрдП рд╕рдВрдЧреНрд░рд╣ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдорддреБрд▓реНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЕрдиреБрдкрд╛рд▓рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЖрдЗрдЯрдо рд╣реЛрддреЗ рд╣реИрдВред

рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рдиреЛрдВ рдХреЗ рджреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВрдЧреЗ, рдПрдХ рд╕реЗ рджреВрд╕рд░реЗ рдХреЗ рдорддрднреЗрджреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдлрд┐рд░ рдЕрдВрддрд░реЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рджреЛ рд╕рдВрдЧреНрд░рд╣ рд╕рдорд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред

рдиреЛрдЯ: рдЪреВрдВрдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЛ рдЕрдм Apple рдХреЗ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдирдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ #available рдЪреЗрдХ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХреЗ рдХрд┐ рдХреЛрдб OS рдкрд░ рдЪрд▓рддрд╛ рд╣реИ рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдЕрдЬреНрдЮрд╛рдд, рдЕрдШреЛрд╖рд┐рдд рдУрдПрд╕ рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, "9999", рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ: "рд╣рдо рдЕрднреА рддрдХ рд╕рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╕рдВрдЦреНрдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ"ред

 var scores1 = [100, 91, 95, 98, 100] let scores2 = [100, 98, 95, 91, 100] if #available(iOS 9999, *) { let diff = scores2.difference(from: scores1) for change in diff { switch change { case .remove(let offset, _, _): scores1.remove(at: offset) case .insert(let offset, let element, _): scores1.insert(element, at: offset) } } print(scores1) } 

рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП, рд╣рдо рдкрд░рд┐рдгрд╛рдо рдХреА рд╕реВрдЪреА рдореЗрдВ рддреАрд╕рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдЬреБрдбрд╝реЗ рд╣реБрдП ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреЗ рдмрдЬрд╛рдп .insert (рдЪрд▓реЛ рдСрдлрд╕реЗрдЯ, рддрддреНрд╡, _), рд╣рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ .insert (рдЪрд▓реЛ рдСрдлрд╕реЗрдЯ, рдЪрд▓реЛ рддрддреНрд╡, рдЪрд▓реЛ рдЬреБрдбрд╝реЗ )ред рдпрд╣ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рде рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЬреЛрдбрд╝реЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИ: рд╕рдВрдЧреНрд░рд╣ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреЛ рджреЛ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рдирд╛ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИ, рдФрд░ рд╕рдВрдмрджреНрдз рдЗрди рджреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдмрд╛рдВрдзрддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕ рдЖрдВрджреЛрд▓рди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдорддрднреЗрджреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдирдП рдЖрд╡реЗрджрди () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЭрдкрдЯреНрдЯрд╛ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 if #available(iOS 9999, *) { let diff = scores2.difference(from: scores1) let result = scores1.applying(diff) ?? [] } 

Uninitialized Arrays рдмрдирд╛рдирд╛


SE-0245 рдиреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬреЛ рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рд╕реЗ рдирд╣реАрдВ рднрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдПрдХ рдирд┐рдЬреА рдПрдкреАрдЖрдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдерд╛, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рдерд╛ рдХрд┐ рдХреЛрдбрдХреЛрдб рдиреЗ рдЗрд╕реЗ рдХреЛрдб рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЬреЛрдЦрд┐рдо рдХреЛ рд╕рдордЭ рдЧрдП рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИред

рдЗрдирд┐рд╢рд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ, рдлрд┐рд░ рдЙрд╕ рдХреНрд▓реЛрдЬрд░ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВ рдЬреЛ рд╕рд░рдгреА рдХреЛ рдорд╛рдиреЛрдВ рд╕реЗ рднрд░рддрд╛ рд╣реИред рдПрдХ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рдПрдХ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдмрдлрд░ рдХреЛ рдПрдХ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╕реВрдЪрдХ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рд╕рд╛рде рд╣реА рдПрдХ рджреВрд╕рд░рд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рддрдиреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ 10 рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкреВрд░реНрдгрд╛рдВрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:

 let randomNumbers = Array<Int>(_unsafeUninitializedCapacity: 10) { buffer, initializedCount in for x in 0..<10 { buffer[x] = Int.random(in: 0...10) } initializedCount = 10 } 

рдХрдИ рдирд┐рдпрдо рд╣реИрдВ:

  1. рдЖрдкрдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рдкреВрд░реЗ рд╡реЙрд▓реНрдпреВрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдк рд╕рд░рдгреА рдХрд╛ рдЖрдХрд╛рд░ 10 рддрдХ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 0 рд╕реЗ 10 рддрдХ рд░реЗрдВрдЬ рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рдбрд╛рдЙрди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди 11 рддрдХред
  2. рдпрджрд┐ рдЖрдкрдиреЗ рд╕рд░рдгреА рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рддрддреНрд╡реЛрдВ рдХреЛ рдЖрд░рдВрднреАрдХреГрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдиреЗ 5 рдХреЗ рд▓рд┐рдП initializedCount рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 4 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рддрддреНрд╡реЛрдВ 0 рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдорд╛рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рд╡реЗ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдорд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реИред
  3. рдпрджрд┐ рдЖрдк initializedCount рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ 0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ рдФрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╕рднреА рдбреЗрдЯрд╛ рдЦреЛ рдЬрд╛рдПрдЧрд╛ред

рд╣рд╛рдВ, рд╣рдо рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ () :

 let randomNumbers2 = (0...9).map { _ in Int.random(in: 0...10) } 

рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдЗрддрдирд╛ рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИ: рд╣рдо рдПрдХ рд╕реАрдорд╛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдлрд┐рд░ рдПрдХ рдирдпрд╛ рдЦрд╛рд▓реА рд╕рд░рдгреА, рдЗрд╕реЗ рдПрдХ рдЖрдХрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓реЛрдЬрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реБрдП, рдкреВрд░реА рд░реЗрдВрдЬ рдХреЛ "рдЧреБрдЬрд░рддреЗ рд╣реИрдВ"ред

рдирд┐рд╖реНрдХрд░реНрд╖


рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рдЕрднреА рднреА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЕрдзреАрди рд╣реИ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд┐рдо рд╢рд╛рдЦрд╛ рд╕реНрд╡рдпрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдИ рд╣реИ, рдХреБрдЫ рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдЕрднреА рднреА рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рд╡рд░реНрддрди рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд┐рд░рддрд╛ рд╣реИ , рдФрд░ рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдЯреАрдо рдЗрд╕ рдкрд░ рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░ рд░рд╣реА рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдЯреАрдХ рд░рд┐рд▓реАрдЬрд╝ рдХреА рддрд╛рд░реАрдЦ рдирд╣реАрдВ рджреА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ 5.1 рдореЗрдВ рд╕реНрд╡рд┐рдлреНрдЯ 5.0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╛рдлреА рдХрдо рд╡рд┐рдХрд╛рд╕ рд╕рдордп рдерд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдКрд░реНрдЬрд╛ рдФрд░ рдзреНрдпрд╛рди рдХреА рдЕрд╕рд╛рдзрд╛рд░рдг рдПрдХрд╛рдЧреНрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рд╣рдо WWDC19 рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЬрдм рдорд╛рдорд▓рд╛ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрд╛рд░реАрдЦ рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

рдПрдХ рдФрд░ рдмрд┐рдВрджреБ рдЬреЛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рджреЛ рдкрд░рд┐рд╡рд░реНрддрди ("рдмрд┐рдирд╛ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА" рдФрд░ "рд╡реИрдХрд▓реНрдкрд┐рдХ рдФрд░ рдЧреИрд░-рд╡реИрдХрд▓реНрдкрд┐рдХ рдЧрдгрдирд╛рдУрдВ рдХрд╛ рдорд┐рд▓рд╛рди") рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рдереЗ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдмрдЧ рдФрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рджреА рдЧрдИ рдереАред

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


All Articles