рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ 5% рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╣реА рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдФрд░ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░, рдХреЛрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрдИ рдмрд╛рд░ рдмрдврд╝ рдЬрд╛рддреА рд╣реИред рд╣рд░ рджрд┐рди рдирдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЬреНрдЮрд╛рдд рдФрд░ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпрд╛рдБ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ рдЬреЛ рди рдХреЗрд╡рд▓ рд╕рдордЭ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреА рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рддрд░рд╣ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреА рдХрд╡рд┐рддрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рднреА рдХрдо рдХрд░рддреА рд╣реИрдВред
рдПрдВрдбреА рдУрд░рд╛рдо рдФрд░ рдЧреНрд░реЗрдЧ рд╡рд┐рд▓реНрд╕рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрд╛рджрд┐рдд рдкреБрд╕реНрддрдХ
"рдЖрдЗрдбрд┐рдпрд▓ рдХреЛрдб" рдХреЛ рдкрдврд╝рддреЗ рд╣реБрдП
, рдореБрдЭреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг (рдЕрдзреНрдпрд╛рдп 24. рдкреГред 444) рдкрд░ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛ред рдЗрд╕рдореЗрдВ рд▓реЗрдЦрдХ, рд╕рд╛рдЗрдорди рдкреЗрдЯрди рдЬреЛрдиреНрд╕, рд╣рд╛рд╕реНрдХреЗрд▓ рдореЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реИрдВред рд╡рд╣ рдпрд╣ рднреА рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ Ada95 рдФрд░ Polyphonic C # рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП Sat Klaus рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдореЗрд░реЗ рдкреЗрд╢реЗрд╡рд░ рд╣рд┐рддреЛрдВ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб Apple рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рдереЛрдбрд╝реА рджреЗрд░ рдкрд╣рд▓реЗ рдЪрд░реНрдЪрд╛ рдХрд░рдиреА рдкрдбрд╝реАред
рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рди рдХрд┐ "рднрд╛рд╖рд╛ рдореЗрдВ", рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдлрд▓рддрд╛ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рднрд╛рд╡рдирд╛рдУрдВ рдореЗрдВ рдХрд╡рд┐рддрд╛ рдХреА рд╕реБрдВрджрд░рддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реНрдпрдХреНрдд рд╢рдмреНрджрд╛рдВрд╢ рдХреА рдХреГрдкрд╛ рдореЗрдВред рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреАрдд рдЧрд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ, рдЬрд┐рдирдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛рдИ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЦрд╛рд▓реА рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдорд╛рдзреБрд░реНрдп рд╣реИ рдЬреЛ рдХрд▓реНрдкрдирд╛ рдХреЛ рдЙрддреНрддреЗрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрдерди:
"рд╕рд╛рдВрддрд╛ рд╕рдордп-рд╕рдордп рдкрд░ рд╕реЛрддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рд╡рд╣ рдЕрдкрдиреЗ рд╕рднреА рдиреМ рдмрд╛рд░рд╣рд╕рд┐рдВрдШрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдЧреГрдд рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдореБрдлреНрдд рдЪрд░рд╛рдИ рд╕реЗ, рдпрд╛ рддреАрди рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рдХреЗ рд╕рдореВрд╣ рджреНрд╡рд╛рд░рд╛ рд╡рд╛рдкрд╕ рдЖ рдЧрдП рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдиреМ рд╣реИрдВред рдпрджрд┐ рд╣рд┐рд░рдг рдЙрд╕реЗ рдЬрдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рд╕реНрд▓реЗрдЬ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХреЗ рд╕рд╛рде рдЦрд┐рд▓реМрдиреЗ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реИ (рдЙрдиреНрд╣реЗрдВ рдореБрдлреНрдд рдЪрд░рд╛рдИ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рджреЗрддрд╛ рд╣реИ)ред рдпрджрд┐ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рдЙрд╕реЗ рдЬрдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХреЛ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рд▓рдп рдореЗрдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рдирдП рдЦрд┐рд▓реМрдиреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрдирд╕реЗ рдмрд╛рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрдд рдореЗрдВ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдХрд╛рд░реНрдпрд╛рд▓рдп рд╕реЗ рдмрд╛рд╣рд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ (рдЙрд╕реЗ рдХрд╛рдо рдкрд░ рд▓реМрдЯрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИ)ред рдпрджрд┐ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рдХрд╛ рд╕рдореВрд╣ рдФрд░ рд╣рд┐рд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╕рд╛рдВрддрд╛ рдХреНрд▓реЙрдЬ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╣рд┐рд░рдг рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрдЧрд╛ред " (рд╕реА)рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐:
рдореБрдЭреЗ рдпрд╣ рдкреНрд░рддреАрдд рд╣реБрдЖ рдХрд┐ рдпрд╣ рднрд╛рд╖рд╛ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╕рдЯреАрдХ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рдХрд╛рд░реНрдп рд╣реИред рдПрдХ рд╕рдордп рдореЗрдВ, рдореЗрд░реЗ рдкрд╛рд╕ C # рдореЗрдВ рдмрд╣реБрдд рд╕реЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдереЗ, рдФрд░ рдлрд┐рд░ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдХрд┐ рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдмреЗрд╣рддрд░ рднрд╛рд╖рд╛ рдирд╣реАрдВ рдереАред рд╕реА # рдЕрдкрдиреА рд╕рд╛рджрдЧреА рдФрд░ рджрдХреНрд╖рддрд╛ рдХреЗ рд╕рд╛рде рд░рд┐рд╢реНрд╡рдд рджреАред рд▓реЗрдХрд┐рди Apple рдиреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рдЧреАрдд рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ред рдФрд░ рдХреИрд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдЧреАрдд рдореЗрдВ рдЖрдкрдХреЛ рдЙрд╕ рд▓рдп, рдЙрд╕ рдореАрдЯрд░ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕реБрдирд╛рдИ рдЧрдИ рд╕рдВрдЧреАрдд рд╕реЗ рдЦреБрд╢реА рджреЗрдЧрд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрд╖реНрдардХ рдХреЗ рдвреЗрд░ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИ, рдЬрд┐рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рджреГрдврд╝рддрд╛ рдФрд░ рд╕рд╛рд╡рдзрд╛рдиреА рдХреЗ рд╕рд╛рде рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рджреЗрддреЗ рд╣реБрдП, рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдЖрдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рдПрд▓реНрд╡реЗрд╕ рдФрд░ рд╣рд┐рд░рдг рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдмрдпрд╛рди рдореЗрдВ, рдЗрди рджреЛрдиреЛрдВ рдЬреИрд╡рд┐рдХ рд░реВрдкреЛрдВ рдХреЛ рдПрдХ рд╕рд╛рд░ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд╕рд╛рде рдмрд░рд╛рдмрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмрд╛рд╣рд░ рд╕реЗ рдмрд╣реБрдд рдХрдо рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИ, рд▓реЗрдХрд┐рди, рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рд┐рд░рдг рдЪрд░рдиреЗ рдФрд░ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдФрд░ рддреЛ рдФрд░, рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдХреАрдорддреА рд╕рдВрд╕рд╛рдзрди рдХреА рдПрдХ рдЕрд▓рдЧ рд░рд╛рд╢рд┐ рдЦрд░реНрдЪ рдХрд░рддрд╛ рд╣реИред
Xcode 4.3 рдореЗрдВ ARC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдХреЛрдб рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВред рдпрд╣ рд╢реЛрдзрди рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, Xcode 4.3ред рдореИрдВрдиреЗ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рджреЗрдЦрдирд╛ рд╕реАрдЦ рд▓рд┐рдпрд╛, рднрд▓реЗ рд╣реА рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд╛рдж рдЙрдирдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдПрдЖрд░рд╕реА рдЖрдкрдХреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд╕реНрдореГрддрд┐ рдкреНрд░реЗрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╛рдиреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рди рдХреЗрд╡рд▓ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдмрд╕ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖рд┐рджреНрдз рд╣реИред рд▓рд╛рдн рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ - рдХреЛрдб рдХреА рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдореЗрдВ, рдФрд░ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЧрддрд┐ рдореЗрдВ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдореЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕рдВрдмрдВрдзрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:
@interface Persone : NSObject { NSInteger number; } @property (nonatomic, copy) NSString *name;
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВред рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ рдФрд░ рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╢реНрди рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИред
рд╕рд╛рдВрддрд╛ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред
#import "Common.h" @interface Santa : Persone @property (nonatomic) BOOL isBusy; // ? \ . - (Persone *)wakeUp:(NSArray *)group; //. , . . . ! @end
рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ, рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рд╛рдВрддрд╛ рдХреЛ рдЬрдЧрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдВрддрд╛ рдЙрд╕ рд╕рдордп рдирд╣реАрдВ рд╕реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╕рдореВрд╣ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рддрджрдиреБрд╕рд╛рд░, рдмреЙрд╕ рдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЗрд╕рдХреА рд╕рдордЭ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдПрдХ рд░рд╣рд╕реНрдпрдордп рдлрд╝рд╛рдЗрд▓ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдШрдмрд░рд╛рд╣рдЯ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреА рд╣реИ:
#import "Common.h" рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ - рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЕрд░реНрде рдмрддрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХреБрдЫ рдЕрдиреНрдп рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ рднреА:
#import "Persone.h" #import "Deer.h" #import "Elf.h" #import "Santa.h" #import "Groups.h" #define kAllMessages 1 // , . #define kGroupDeers @"Deer" // . #define kGroupElfs @"Elf" // . #define kMontsDeer 12 // 1-12. #define kMontsElf 18 // . 1-18. #define kMontsSanta 4 // . #define countElfInGroup 3 // , . #define countDeerInGroup 9 // , .
рдЕрдВрддрд┐рдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд░рд╣рддрд╛ рд╣реИ, рдЬреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рд╣реИ:
#import "Common.h" @interface Groups : NSObject { NSMutableDictionary *groups; // . } - (Groups *)add:(Persone *)persone; // . - (NSArray *)ready; // . @end
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рдВрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдПрдХ рдФрд░ рд╕рдореВрд╣ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рддрдВрддреНрд░, рдФрд░ рд╣рд┐рд░рдг рдФрд░ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ред
рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ... рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╣рд┐рд░рдг рдмрдирд╛рдПрдВред
#import "Common.h" @implementation Deer static int count; @synthesize name; - (id)init { if(count >=9) return nil; // 9. self = [super init]; if (self) { count++; number = count; self.name = kGroupDeers; } return self; }
рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХрд╛рдлреА рд░реВрдврд╝рд┐рдмрджреНрдз рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдкрд╛рд╕ рдирд╛рдо рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд▓рд┐рдП рдореБрдЦреНрдп рдореВрд▓реНрдп рд╡рд╛рд▓реЗ рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВред
- (void)eat { dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSInteger month = (arc4random() % kMontsDeer) + 1; #if kAllMessages NSLog(@"%d- %d ", number, month); #endif [NSThread sleepForTimeInterval:month]; #if kAllMessages NSLog(@"%d- ", number); #endif dispatch_async(dispatch_get_main_queue(), ^{ [[[Groups alloc] init] add:self]; }); }); }
рдФрд░ рдпрд╣рд╛рдБ рдпрд╣ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред рдЦрд╛рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧрд╛ рд╢реБрд░реВ рдХрд░рддреА рд╣реИ, рд╣рд┐рд░рдг рдХреА рд╡рд░реНрддрдорд╛рди рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдПред рдпрд╣реА рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рд╣рд┐рд░рдг, рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рд╛рде рд░рд╣реЗрдВрдЧреЗ рдФрд░ рд░рд╣реЗрдВрдЧреЗред рдЬрдЯрд┐рд▓ рдмреНрд░реИрдХреЗрдЯ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реИ: dispatch_async (dispatch_get_global_queue (0, 0), ^ {}); - рдирд┐рд╖реНрдкрд╛рджрди рдХрддрд╛рд░ рдореЗрдВ рдХреЛрд╖реНрдардХ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХреНрдпрд╛ рдХрд╣рддреЗ рд╣реИрдВред Dispatch_get_global_queue рддрд░реНрдХ рдХрд╛ рдЕрд░реНрде рд╡реИрд╢реНрд╡рд┐рдХ рдХрддрд╛рд░ рд╣реИред (0, 0) - рдкрд╣рд▓реЗ 0 рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рджреВрд╕рд░рд╛ 0 рдЖрдИрдУрдПрд╕ рдПрд╕рдбреАрдХреЗ рдореЗрдВ рдХреБрдЫ рднреА рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрд░рдХреНрд╖рд┐рдд рд╣реИред
рд╡рд░реНрдгрд┐рдд рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рд╣рдо рдкрд╛рддреЗ рд╣реИрдВ: NSInteger month = (arc4random ()% kMontsDeer) + 1; - рд╣рд┐рд░рдг рдЪрд░рдиреЗ рдХреЗ рдорд╣реАрдиреЛрдВ рдХреА рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреА рд╕реАрдорд╛ 1 рд╕реЗ kMontsDeer рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рджреЗрд░реА рд╣реЛрддреА рд╣реИ - рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрд╛рд░рд╛рдЧрд╛рд╣ - [NSThread sleepForTimeInterval: month]; рдФрд░ рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛, рдПрдХ рд╕рдорд╛рди рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рдХреЛрдб рдХреЗ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдХреБрдЫ рдХреЛрдб рджреВрд╕рд░реА рдХрддрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕реНрддрд░ рдкрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд╕рдореВрд╣ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдкрд╛рд╕ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдПрдХ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╡рд╣ рдПрдХ рдЧрд╛рдпрдХ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдПрдХ рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреЛрдбрд╝рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдмрд╕ рд╡рд░реНрддрдорд╛рди рд╣рд┐рд░рдг рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдЧреАред
- (Persone *)execution { [self eat]; return self; } @end
рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддреА рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реБрд╕рдВрдЧрдд рд╣реИрдВред рдпрд╛рдиреА рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╡рд┐рдзрд┐ рдмрдирд╛рддрд╛ рд╣реИред
рдПрдХ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ, рд╣рдо рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВред
#import "Common.h" @implementation Elf static int count; @synthesize name; - (id)init { if(count >=10) return nil; // 10. self = [super init]; if (self) { count++; number = count; self.name = kGroupElfs; } return self; } - (void)work { dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSInteger month = (arc4random() % kMontsElf) + 1; #if kAllMessages NSLog(@" %d . %d ", number, month); #endif [NSThread sleepForTimeInterval:month]; #if kAllMessages NSLog(@" %d ", number); #endif dispatch_async(dispatch_get_main_queue(), ^{ [[[Groups alloc] init] add:self]; }); }); } - (Persone *)execution { [self work]; return self; } @end
рдмрд╛рдВрдЯреЛ рдФрд░ рдкреНрдпрд╛рд░ рдХрд░реЛ
рд╕рдореВрд╣ рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдп рд╕рдореВрд╣реЛрдВ рдХреЛ рдкреНрд░реЗрд╖рдг рдФрд░ рдмрдирд╛рдирд╛ рд╣реИред рддрдВрддреНрд░ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, (рдЬреИрд╕реЗ рдХрд┐ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ, рд╣рд┐рд░рдг рдХреЛ рд╣рд┐рд░рдг), рдФрд░ рдлрд┐рд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреНрд░рддрд┐рдпрд╛рдВ рдХрддрд╛рд░ рдореЗрдВ рдПрдХрддреНрд░ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рд╡рд╣рд╛рдВ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдмрдлрд░ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рд╛рдВрддрд╛ рдХрд╛ рдкреНрд░рддреАрдХреНрд╖рд╛рд▓рдп -Klausaред
#import "Common.h" @implementation Groups static Groups *instance; - (id)init { if(instance!=nil) return instance; self = [super init]; if (self) { groups = [NSMutableDictionary dictionary]; instance = self; } return self; } - (Groups *)add:(Persone *)persone { NSMutableArray *queue = [groups objectForKey:persone.name]; // . if(queue == nil) queue = [NSMutableArray array]; [queue addObject:persone]; // . [groups setValue:queue forKey:persone.name]; #if kAllMessages NSLog(@" \"%@\" %d", persone.name, queue.count); #endif Santa *santa = [[Santa alloc] init]; if(santa.isBusy == NO) [santa wakeUp:[self ready]]; return self; } - (NSArray *)queueElf { NSMutableArray *queue = [groups objectForKey:kGroupElfs]; if(queue.count < countElfInGroup) return nil; // . NSMutableArray *group = [NSMutableArray array]; for (int i=0; i<countElfInGroup; i++) // 3 ... [group addObject:[queue objectAtIndex:i]]; for (id item in group) // ... . [queue removeObject:item]; [groups setValue:queue forKey:kGroupElfs]; return [group copy]; } - (NSArray *)queueDeer { NSMutableArray *queue = [groups objectForKey:kGroupDeers]; if(queue.count < countDeerInGroup) return nil; // . NSArray *group = [queue copy]; for (id item in group) // . [queue removeObject:item]; [groups setValue:queue forKey:kGroupDeers]; return group; } - (NSArray *)ready { NSArray *group = [self queueElf]; if(group!=nil) return group; return [self queueDeer]; }
рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╡рд░реНрдЧ рдПрдХ рдПрдХрд▓ рд╣реИред рдПрдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд▓рд┐рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдмреЗрд╣рдж рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЗ рднреАрддрд░ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрдм рд░реЛрдХреЗрдЧрд╛ рдЬрдм рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рдПрдХ рд╣реА рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдереНрд░реЗрдбреНрд╕ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрддрд╛рд░ рддрдХ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХреЗред рдмреЗрд╢рдХ, рдпрд╣ рдХреБрдЫ рд░рдирдЯрд╛рдЗрдо рдУрд╡рд░рд╣реЗрдб рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдЗрддрдиреЗ рдЕрдпреЛрдЧреНрдп рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЙрдкреЗрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕ рдХреЛрдб рдХрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╕реНрдерд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧ рд╣реИ:
Santa *santa = [[Santa alloc] init]; if(santa.isBusy == NO) [santa wakeUp:[self ready]];
рд╣рдо, рд╕рдореВрд╣ рдХреЗ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХреА рддрд░рд╣, рд╣рдорд╛рд░реЗ рд╕рд╛рдВрддрд╛ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рд╣рдо рд╡рд╣рд╛рдВ рд╣реЛрдВрдЧреЗ, рдЧрдард┐рдд рд╕рдореВрд╣ рдХреЛ рдЕрдкрдиреЗ рдХрдХреНрд╖реЛрдВ рдореЗрдВ рднрд░ рджреЗрдВрдЧреЗред рд╡реИрд╕реЗ рднреА, рдХреНрдпрд╛ред рдЙрд╕рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рд┐рд░рдг рдпрд╛ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рд╣реЛрдВрдЧреЗ, рд╡рд┐рдзрд┐ рдЙрддреНрддрд░ рджреЗрддреА рд╣реИ - (NSArray *) рддреИрдпрд╛рд░
рдореЗрд░реЗ рдЖрддрдВрдХ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд▓реЗрдЦ рдХреА рддреИрдпрд╛рд░реА рдХреЗ рджреМрд░рд╛рди рдореИрдВрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдорд┐рд▓рд╛рдпрд╛ред рдпрд╛рдиреА рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреНрд░рд┐рд╕реНрддрд┐рд╕ рдкреИрд░рд┐рдмрд╕, рд╕рд╛рдВрддрд╛ рдПрд▓реНрдмреЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХрд░рддрд╛ рд╣реИ, рд╣рд┐рд░рдгреЛрдВ рдХреА рдирд╣реАрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рд╣реИрдВ рдЬреЛ 10 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИрдВ, рди рдХрд┐ 9. рдпреЗ рджреЛрдиреЛрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдЖрд╕рд╛рдиреА рд╕реЗ рддрдп рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдмрджрд▓рддреА рд╣реИ:
- (NSArray *)ready { NSArray *group = [self queueDeer]; if(group!=nil) return group; return [self queueElf]; }
рд╣рд╛рд▓рд╛рдВрдХрд┐, рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЬрдм рдпрд╣ рдХрд╛рд░реНрдп рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ рдРрд╕реА рд╕рдВрд╢реЛрдзрд┐рдд рд╕реНрдерд┐рддрд┐ рдпрд╣рд╛рдВ рдорд╛рди рд▓реА рдЬрд╛рддреА рд╣реИред
Madrigal
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЧреАрдд рдХреЗ рдЕрдВрддрд┐рдо рдЪрд░рд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рдорд┐рд▓рд╛ - рд╕рд╛рдВрддрд╛:
#import "Common.h" @implementation Santa static Santa *santa; static int count; BOOL doWork; @synthesize isBusy; static int groupNumber; - (id)init { if(santa!=nil) return santa; self = [super init]; if (self) { santa = self; count++; number = count; NSLog(@">> %d- ", number); } return self; } - (void)sleep { NSLog(@">> %d ....", number); } - (Santa *)wakeUp:(NSArray *)group { if(group == nil) return self; NSLog(@">> %d .... ", number); [self work:group]; // . return self; } - (BOOL)isBusy { return doWork; } - (void)work:(NSArray *)group { if(doWork == YES) return; doWork = YES; __block Santa *santa = self; __block NSArray *currentGroup = group; __block NSInteger IDGroup = ++groupNumber; dispatch_async(dispatch_get_global_queue(0, 0), ^{ NSInteger month = (arc4random() % kMontsSanta) + 1; NSLog(@">> %d- . %d c ID %d", number, month, IDGroup); [santa portalIn:currentGroup]; [NSThread sleepForTimeInterval:month]; NSLog(@">> %d c ID %d", number, IDGroup); dispatch_async(dispatch_get_main_queue(), ^{ doWork = NO; [[santa portalOut:currentGroup] sleep]; // . }); }); } - (Persone *)execution { NSLog(@"Yahoo!!!"); return self; } - (Santa *)portalIn:(NSArray *)group { if([[group objectAtIndex:0] isKindOfClass:[Elf class]]) NSLog(@">> %d ", number); if([[group objectAtIndex:0] isKindOfClass:[Deer class]]) NSLog(@"\n\t\t yp p\n\t\t p p y p.\n\t\t y, p p p,\n\t\t y p, p"); return self; } - (Santa *)portalOut:(NSArray *)group { for (Persone *persone in group) [persone execution]; return self; }
рдХреЛрдб рдХреЗ рд╕рдмрд╕реЗ рдЬрдЯрд┐рд▓ рднрд╛рдЧ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рджреЛ рддрд░реАрдХреЛрдВ рдкрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рд╡рд┐рдзрд┐:
portalIn:(NSArray *)group
рдФрд░ рдирд┐рдХрд╛рд╕ рджреНрд╡рд╛рд░ рд╡рд┐рдзрд┐:
portalOut:(NSArray *)group.
рдпрд╣ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╣ рдХрд╛рд░реНрдп рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдереА - рдкреНрд░рд╡реЗрд╢ рдФрд░ рдирд┐рдХрд╛рд╕ рджреНрд╡рд╛рд░ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ред
рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рд╕рдВрдХреЗрдд рджреЗрддреА рд╣реИ рдХрд┐ рд╕рд╛рдВрддрд╛ рдХреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреАрд▓ рдереАред рдЬрдм рднреА рд╣рдо рд╕рд╛рдВрддрд╛ рдХреЗ рд╕рд╛рде рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдЙрд╕рдХрд╛ рдирдВрдмрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред рд╣рдо рдРрд╕рд╛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдкрд╛рдардХ рдЖрд╢реНрд╡рд╕реНрдд рд╣реЛ рдЬрд╛рдП рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдкреВрд░реЗ рдХрд╛рд▓ рдореЗрдВ рдПрдХ рд╣реА рд╕рд╛рдВрддрд╛ рдХреЗ рд╕рд╛рде рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред
рд╡рд┐рдзрд┐
wakeUp:(NSArray *)group
рд╕рдореВрд╣ рдХреЛ рдкреНрд░рддреАрдХреНрд╖рд╛рд▓рдп рдФрд░ рд╕рд╛рдВрддрд╛ рдХреЛ рдЬрд╛рдЧрдиреЗ рджреЗрддрд╛ рд╣реИред рд╕рднреА рдореБрдЦреНрдп рдХрд╛рд░реНрдп рдХрд╛рд░реНрдп рд╡рд┐рдзрд┐ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд╛рдВрддрд╛ рд╡реНрдпрд╕реНрдд рд╣реИ рдпрд╛ рдирд╣реАрдВред
if(doWork == YES) return;
рдпрд╣ рдПрдХ рдирд┐рд░рд░реНрдердХ рдЬрд╛рдБрдЪ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХреБрдЫ рдЧрд▓рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдмрд╛рд░ рдЪреВрдХ рдЬрд╛рддреЗ рд╣реИрдВред рддрдм рд╣рдо рдПрдХ "рд╡реНрдпрд╕реНрдд" рд╕рдВрдХреЗрдд рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рд╕рд╛рдордиреЗ рдХреЗ рджрд░рд╡рд╛рдЬреЛрдВ рдХреЛ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВ:
doWork = YES;
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдереНрд░реЗрдбреНрд╕, рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдФрд░ рдореБрдЦреНрдп рдХреЗ рдЕрдВрджрд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрд░ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред
__block Santa *santa = self; __block NSArray *currentGroup = group; __block NSInteger IDGroup = ++groupNumber;
рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЧреИрд░-рд╕рд╛рдЭрд╛ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рдмрд╣рд┐рд╖реНрдХрд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рд░рд▓ рд╣реЗрд░рдлреЗрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ __block рдХреАрд╡рд░реНрдб рдбрдмрд▓ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдиреА _ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рджреЛ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ! рдлрд┐рд░ рд╣рдо рд╕рд╛рдВрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдбреАрдпрд░ рдФрд░ рдПрд▓реНрд╡реЗрд╕ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛, рдФрд░ рдкреНрд░рд╡реЗрд╢ рджреНрд╡рд╛рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдВрддрд╛ рдХреЗ рдХрдХреНрд╖реЛрдВ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдореВрд╣ рдХреЛ рдЬрд╛рд░реА рдХрд░рддреЗ рд╣реИрдВ: [santa portalIn: currentGroup];
рд╕рд╛рдВрддрд╛ рдХреЗ рдкрд╛рд╕ рдХреМрди рдЖрдпрд╛ рдерд╛, рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд╣ рджреЛ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд░рддрд╛ рд╣реИ - рдпрд╛ рддреЛ рдПрдХ рдпреЛрдЬрдирд╛ рдмреИрдардХ рдЖрдпреЛрдЬрд┐рдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЙрдкрд╣рд╛рд░ рдмрдЪрд╛рддрд╛ рд╣реИред рдЬрдм рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╛рдВрддрд╛ рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдореЗрд╣рдорд╛рдиреЛрдВ рдХреЛ рдЙрдирдХреЗ рдкрд┐рдЫрд▓реЗ рдХрд╛рдо рдХреЗ рд╕реНрдерд╛рди рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдп рдХрд╛ рд╕рд╛рд░рд╛ рдЬрд╛рджреВ рдирд┐рдХрд╛рд╕ рджреНрд╡рд╛рд░ рд╡рд┐рдзрд┐ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, "рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдордиреБрд╖реНрдп рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рд╣реИ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рджрд┐рд╡реНрдп рд╣реИред" - рдПрд▓ред рдкреАрдЯрд░ред рдЪреВрдВрдХрд┐ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЛ рдореБрдЦреНрдп рдзрд╛рдЧреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдирдП рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдпреЛрдЧрд┐рдиреА рдпрд╛ рд╣рд┐рд░рдг, рдПрдХ рдмрд╛рд░ рдкреИрджрд╛ рд╣реЛрдиреЗ рдкрд░, рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рддрдХ рдЕрдкрдиреЗ рдХрд░реНрддрд╡реНрдпреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдЧрд╛, рдЬрдм рддрдХ рдХрд┐ рдЙрдиреНрд╣реЗрдВ
SIGABRT рдХреЗ рд╕рд┐рд░ рд╕реЗ рд╕реАрдзреЗ рдЧреЛрд▓реА рди рдорд╛рд░ рджреА рдЬрд╛рдПред
рдФрд░ рдЕрдм рдЧрд╛рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред
рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЬрдЧрд╣ рдореЗрдВ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ - (рд╢реВрдиреНрдп) рджреГрд╢реНрдпрдбрд╛рдпрд▓рд╛рдб
рд╢реНрд▓реЛрдХ резред
for (int i = 0; i<9; i++) [[[Deer alloc] init] execution]; for (int i = 0; i<10; i++) [[[Elf alloc] init] execution]; for (int i = 0; i<4; i++) [[[Santa alloc] init] execution];
рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХреБрддреНрддреЗ рдХреЛ рдзрд╛рдЧрд╛ рдирд┐рд░реНрдорд╛рдг рдкрд░ рдЦрд╛рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдзрд╛рдЧреЗ рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд▓рдкреЗрдЯрд╛ рдЧрдпрд╛?
рд╢реНрд▓реЛрдХ реиред
dispatch_async(dispatch_get_global_queue(0, 0), ^{ for (int i = 0; i<9; i++) [[[Deer alloc] init] execution]; for (int i = 0; i<10; i++) [[[Elf alloc] init] execution]; for (int i = 0; i<4; i++) [[[Santa alloc] init] execution]; });
рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдПрдХ рдЕрд▓рдЧ рдзрд╛рд░рд╛ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдХреНрд░рдо рдХреЗрд╡рд▓ рд╕рдВрдпреЛрдЧ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрдЧрд╛ред рдХреНрдпрд╛ рдХрд░реЗрдВ? рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП, рдзрд╛рдЧреЗ рдмрдирд╛рдиреЗ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рд╣реИ:
рд╢реНрд▓реЛрдХ рейред
dispatch_async(dispatch_get_global_queue(0, 0), ^{ dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{for (int i = 0; i<30; i++) [[[Deer alloc] init] execution];}); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{for (int i = 0; i<30; i++) [[[Elf alloc] init] execution];}); dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{for (int i = 0; i<10; i++) [[[Santa alloc] init] execution];}); });
рдкрд╣рд▓реЗ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рдореЗрдВ, рдПрдХ рд╕рдореВрд╣ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рднреАрддрд░ рд╣рд┐рд░рдг рдФрд░ рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЙрдирдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рд╕рд╛рдВрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рдЧрд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдЧрд░ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ
рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:>> 1-
1- 6
2- 7
3- 9
4- 4
5- 3
Yahoo!!!
7- 5
9- 2
Yahoo!!!
Yahoo!!!
Yahoo!!!
6- 8
3 . 15
5 . 17
4 . 10
2 . 16
8- 3
рдлрд┐рд░ рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ
рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:1- 7
4- 5
3- 12
2- 7
5- 3
6- 4
7- 7
8- 11
9- 6
1 . 11
2 . 2
3 . 16
4 . 4
5 . 16
6 . 1
7 . 2
8 . 14
9 . 15
10 . 3
>> 1-
Yahoo!!!
Yahoo!!!
Yahoo!!!
Yahoo!!!
Yahoo!!!
Yahoo!!!
Yahoo!!!
Yahoo!!!
Yahoo!!!
Yahoo!!!
6
"Elf" 1
2
"Elf" 2
рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓реЙрдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдХрд╛рдо рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рд╕реЗ рд╡реЗ рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЕрднреА рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдзрд┐рдХ рдЗрд╖реНрдЯрддрдо рддрд░реАрдХреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рдореИрдВ
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рд▓рд┐рдВрдХ рднреА
рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ
редрд▓реЙрдЧ рдореЗрдВ рдХреНрдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЕрд▓рдЧ рдореВрд▓реНрдп рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЪрд░рд┐рддреНрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реБрд░реБрдЖрддреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рд╛рдВрддрд╛ рдЙрдкрд╣рд╛рд░ рджреЗрдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рд▓рдЧрд╛рддрд╛рд░ рдмреИрдардХреЛрдВ рдХреА рджрд┐рдирдЪрд░реНрдпрд╛ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд░рд╣реЗрдЧрд╛ред рдХреЛрдб рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рдВрдмреА рдФрд░ рдЕрд╕рдлрд▓ рдЦреЛрдЬ рдХреЗ рдмрд╛рдж, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдорд╛рдирдХ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдореЙрдбрд▓ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рд╕рдм рдХреБрдЫ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИ: рдпрджрд┐ рдПрд▓реНрдл рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдмрд╣реБрдд рдХрдо (3-4) рдорд╣реАрдиреЗ рд╣реИ, рддреЛ рд╕рдореВрд╣ рдЗрддрдиреА рдмрд╛рд░ рдмрдиреЗрдВрдЧреЗ рдХрд┐ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗ; рдХрддрд╛рд░реЗрдВ (рдореБрдЭреЗ рдпрд╛рдж рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрдерд┐рддрд┐ рдХреЗ рд╡рд┐рд▓реЛрдо рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред
рдЗрд╕ рдЕрднреНрдпрд╛рд╕ рдХрд╛ рддрд╛рд░реНрдХрд┐рдХ рдореВрд▓реНрдп рдХреНрдпрд╛ рд╣реИ? рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдПрдХ
рд╕реНрдХреНрд░реИрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореИрдиреЗрдЬрд░ рд╣реИрдВред рдЪреВрдВрдХрд┐ рдЖрдкрдХреЛ рджреИрдирд┐рдХ рдЖрдзрд╛рд░ рдкрд░ рдмреИрдардХреЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд░рдиреА рд╣реЛрддреА рд╣реИрдВ, рдХрднреА-рдХрднреА рдпреВрдПрд╕рдПрд╕рдЖрд░ рдХреЗ рд╕реБрдкреНрд░реАрдо рд╕реЛрд╡рд┐рдпрдд рдХреА рдкреВрд░реНрдг рдмреИрдардХреЛрдВ рдореЗрдВ рдЧреБрдЬрд░рддреЗ рд╣реБрдП, рдРрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрд╡реЗрд╕ рдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдирд┐рд░рдВрддрд░
рд╕рдордп рджрдмрд╛рд╡ рдЪрд░рдг рдореЗрдВ рдЪрд▓реА рдЬрд╛рддреА рд╣реИред рдЯреАрдо рд▓реАрдбрд░ - рд╕рд░реНрд╡рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ - рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рддреНрд░рд┐рдХреЛрдг рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдЯреАрдо рд▓реАрдбрд░ рдЖрдорддреМрд░ рдкрд░ рдЕрдкрдиреА рддрддреНрдХрд╛рд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ (рдиреАрдВрдж);) рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рд░реЗрдирдбрд┐рдпрд░ рдпрд╛ рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рдХреЗ рд▓рд┐рдП рдХреЛрдб рд░реЗрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрддрд╛ рд╣реИ; рдХрд▓реНрдкрд┐рдд рдмреМрдиреЗред рдФрд░ рдпрджрд┐ рдЖрдк рдЖрдИрдЯреА рдХреНрд╖реЗрддреНрд░ рд╕реЗ рджреВрд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рд╛рдВрддрд╛ рдЯрд╛рд╕реНрдХ рдЧреБрдгрд╛рдВрдХреЛрдВ рдХреЛ рдорд╛рд▓ рдХреА рд▓реЛрдбрд┐рдВрдЧ / рдЕрдирд▓реЛрдбрд┐рдВрдЧ / рд╡реЗрдпрд░рд╣рд╛рдЙрд╕рд┐рдВрдЧ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рдореМрд▓рд┐рдХ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ рдПрдирд╛рд▓реЙрдЧ рдвреВрдВрдврдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖:
рдЙрдкрд░реЛрдХреНрдд рдХреЛрдб рдореЗрдВ, рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рдЪрд╛рд▓реЗрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЕрд▓рдЧ рд╕реЗ рдХрд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
1)
NSMutableArray *group = [NSMutableArray array]; [skip] return [group copy];
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬреЛ рдЕрднреА рднреА рдПрдЖрд░рд╕реА рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЗрд╕ рдХреЛрдб рд╕реЗ рднрдпрднреАрдд рд╣реЛрдВрдЧреЗред рдФрд░, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╡реЗ рдХреБрдЫ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдЬреИрд╕реЗ [[NSArray arrayWithArray: group] autorelise]; рдиреНрдпреВрдирддрдо рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рдирд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдЖрд░рд╕реА рдЗрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдХреЛрдб рдЕрдзрд┐рдХ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
2)
- (Santa *)portalOut:(NSArray *)group { [skip] return self; }
рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдХреВрдж рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж: [рд╕реНрд╡рдпрдВ рдкреЛрд░реНрдЯрд▓: рд╡рд░реНрддрдорд╛рди рдЬреАрдЧреНрд░реБрдк] рдиреАрдВрдж]; рдХрд╛рд░реНрдпрд╛рддреНрдордХ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдФрд░ рдЬреЛ рд▓реЛрдЧ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ C # рд╡рд┐рдзрд┐рдпреЛрдВ (рдЬреЛ рдХрд┐ LINQ рдореЗрдВ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ) рдХреЛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЖрддреНрдорд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╛рдо рдХреА рддрд░рд╣ рд╣реИ ... рдмреЗрд╢рдХ, рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЛ рджреЛ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
3)
#if kAllMessages NSLog(@" %d . %d ", number, month); #endif
KAllMessages precompilation рдирд┐рд░реНрджреЗрд╢ Common.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рдорд╛рд╣рд┐рдд рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдирд╕реБрдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡рд░реНрдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рд╕рднреА рдХреНрд░рд┐рдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд рд▓реЙрдЧ рдореЗрдВ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рд╛рдВрддрд╛ рдХреНрд░рд┐рдпрд╛рдПрдБ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВред рдореИрдВ рд▓реЗрдЦ рдореЗрдВ рдХрдВрд╕реЛрд▓ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдирд╣реАрдВ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐, рдЖрдорддреМрд░ рдкрд░, рдпрд╣ рдкрд╣рд▓рд╛ рдкрд░рд┐рдЪрд┐рдд рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╢реНрд░реЗрдгреАрдмрджреНрдз рдЕрдирд┐рд╡рд╛рд░реНрдп:
рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдПрдХ рдЖрд╡реЗрджрди рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЧреБрдирд╛ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрд╛ред рдпрджрд┐ рдЖрдк рдЕрднреА рддрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЖрд╕рд╛рдиреА рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдФрд░ рд╣рд╛рдБ, рдЙрд╕реЗ рдореБрдЭ рдкрд░ рдПрдХ рдкрддреНрдерд░ рдлреЗрдВрдХрдиреЗ рджреЛ, рдЬреЛ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ Apple рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдЧреНрд░рд╣ рдХреЗ рдЪрд░рдо рддрдХ рдкрд╣реБрдВрдЪ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рд╕рдВрджрд░реНрдн:
рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб (iOS рдПрд╕рдбреАрдХреЗ 5, рдПрдХреНрд╕рдХреЛрдб 4.3)редрдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрди рд╕рдореВрд╣реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЖрд╡реЗрджрди рд▓реЙрдЧредрдереНрд░реЗрдб рдирд┐рд╖реНрдкрд╛рджрди рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рд▓реЙрдЧредрдереНрд░реЗрдб рд╕рдореВрд╣ рдореЗрдВ рд╕рд╛рдВрддрд╛ рдХреЗ рдХрд╛рдо рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдкредрд╕рд╛рд░рд╛рдВрд╢:
рд▓реЗрдЦ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдИрдУрдПрд╕ рдПрд╕рдбреАрдХреЗ 3+ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд░рд╕рдж рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╕рд╛рдВрддрд╛ рдХреЗ рдХрд╛рд░реНрдп рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрджреНрдзреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕реНрд░реЛрдд рдХреЛрдб рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбрд┐рд╕реНрдкреИрдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
dispatch_async,
рдЖрд╡реЗрджрди рдзрд╛рдЧрд╛ рдХрддрд╛рд░реЛрдВ
dispatch_get_main_queue()
рдЖрд╡реЗрджрди рдкреГрд╖реНрдарднреВрдорд┐ рдзрд╛рдЧрд╛
dispatch_get_global_queue
, рдФрд░ рджреЗрд░реА рдЕрдВрддрд░рд╛рд▓
[NSThread sleepForTimeInterval:month];
ред рд░реИрдЦрд┐рдХ рд╕рд░рдгрд┐рдпреЛрдВ рдФрд░ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдЧрддрд┐рд╢реАрд▓ рд╢рдмреНрджрдХреЛрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрддрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
UPD: рд╕реЛрд░реНрд╕ рдХреЛрдб рдХрд╛ рд▓рд┐рдВрдХ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ред