рдирдорд╕реНрдХрд╛рд░ рд╕рд╛рдерд┐рдпреЛрдВ!
рдореИрдВ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЖрдИрдУрдПрд╕ рдХреЗ рд▓рд┐рдП рд╡рд┐рджреЗрд╢реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдмреНрд▓реЙрдЧ рдФрд░ рд▓реЗрдЦ рдкрдврд╝ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рджреВрд╕рд░реЗ рджрд┐рди рдореИрдВ
рдорд╛рдЗрдХ рдРрд╢ рдирд╛рдордХ рдПрдХ рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрджрд░реНрдн рдЧрдгрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ, рдмрд▓реНрдХрд┐ рд╡рд┐рд╕реНрддреГрдд рд▓реЗрдЦ рдкрд░ рдЖрдпрд╛ред
рд▓реЗрдЦ рдХрд╛рдлреА рдмрдбрд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рдЕрдиреБрд╡рд╛рдж рдХреЛ рдХрдИ рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛рдКрдВрдЧрд╛ред рдореБрдЭреЗ 2 рднрд╛рдЧреЛрдВ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред
рдЪреВрдВрдХрд┐ Apple рдиреЗ рдЗрд╕ рдирд╡рд╛рдЪрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреА, рдЗрд╕рд▓рд┐рдП рдкрд╛рдардХреЛрдВ рдиреЗ рдореБрдЭреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрджрд░реНрдн рдЧрдгрдирд╛ (ARC) рддрдВрддреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд┐рдпрд╛ред рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдЖрдЬ рд╣рдо Apple рдХреЗ рдирдП рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ: рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд╕рдВрдХрд▓реНрдкрдирд╛рдХреНрд▓реИрдВрдЧ рд╕реНрдЯреИрдЯрд┐рдХ рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рдЙрдкрдпреЛрдЧреА рдЙрдкрдХрд░рдг рд╣реИред рдпрджрд┐ рдЖрдк рдФрд░ рдореИрдВ рдПрдХ рдЬреИрд╕реЗ рд╣реИрдВ, рддреЛ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рд╕реЛрдЪрддреЗ рд╣реИрдВ: "рдпрджрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдиреЗ рддреНрд░реБрдЯрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛, рддреЛ рдореЗрд░реЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рдареАрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?"
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдпрд╣ рдПрдЖрд░рд╕реА рдХрд╛ рд╕рд╛рд░ рд╣реИред рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдирд┐рдпрдо рд╕рдВрдХрд▓рдХ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдбреЗрд╡рд▓рдкрд░ рдХреЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдПрдЖрд░рд╕реА рддрдВрддреНрд░ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдХреЙрд▓ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рд╕рдм рд╣реИред
рдПрдЖрд░рд╕реА рддрдВрддреНрд░ рдХрд╣реАрдВ рди рдХрд╣реАрдВ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдФрд░ рдореИрдиреБрдЕрд▓ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХреЗ рдмреАрдЪ рд╣реИред рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХреА рддрд░рд╣, рдПрдЖрд░рд╕реА рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП
рд░рд┐рдЯреЗрди / рд░рд┐рд▓реАрдЬ / рдСрдЯреЛрд░реЗрд▓рд┐рдЬ рдХреЙрд▓ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд
рдХрд░рддрд╛ рд╣реИ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдЖрд░рд╕реА рд▓реВрдк рдХреЛ
рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдордЬрдмреВрдд рд▓рд┐рдВрдХ рд╡рд╛рд▓реА рджреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХрднреА рднреА рдПрдЖрд░рд╕реА рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рднрд▓реЗ рд╣реА рдХреЛрдИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрднрд┐рдд рди рдХрд░реЗред рдЬрдмрдХрд┐ рдПрдЖрд░рд╕реА рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд░рд╛рд╣рдд рджреЗрддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдЕрднреА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдЦреНрдд рдкрд░рд┐рдкрддреНрд░ рд╕рдВрджрд░реНрднреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, ARC рдФрд░ Apple рдХреЗ GC рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдПрдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░: ARC рдПрдХ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рд╣реИред Apple рд╕реЗ GC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдпрд╛ рддреЛ рд╕рдВрдкреВрд░реНрдг рдЕрдиреБрдкреНрд░рдпреЛрдЧ GC рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдРрдкреНрдкрд▓ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдерд░реНрдб-рдкрд╛рд░реНрдЯреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕рд╣рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреАрд╕реА рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ ARC рдХреЛ рдПрдХ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдореИрдиреБрдЕрд▓ рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде "рдиреЙрди-рдПрдЖрд░рд╕реА" рдХреЛрдб рдХреЗ рд╕рд╛рде рд╢рд╛рдВрддрд┐ рд╕реЗ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдмрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреЗ рдореБрджреНрджреЛрдВ рдХреЗ рдмрд┐рдирд╛ рднрд╛рдЧреЛрдВ рдореЗрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдЬреАрд╕реА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ рдЬрдм рдЗрд╕реЗ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
XcodeрдПрдЖрд░рд╕реА рдПрдХреНрд╕рдХреЛрдб 4.2 рдмреАрдЯрд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрдиреЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдЬрдм рдХреНрд▓реИрдВрдЧ (рдЙрд░реНрдл "рдРрдкреНрдкрд▓ рдПрд▓рдПрд▓рд╡реАрдПрдо рдХрдВрдкрд╛рдЗрд▓рд░") рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рди рдЪреБрдирдирд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдкрд╖реНрдЯ рдирд╛рдо "рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕рдВрджрд░реНрдн рдЧрдгрдирд╛" рдХреЗ рд╕рд╛рде рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдиреЛрдЯ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдХреЛрдб рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдПрдЖрд░рд╕реА рди рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдореГрддрд┐ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░рдиреЗ рд╕реЗ рднреА рд░реЛрдХрддрд╛ рд╣реИред рдПрдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╕реНрддреБрдУрдВ
рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ / рдЬрд╛рд░реА рдХрд░рдиреЗ / рдСрдЯреЛрд░реЗрд▓рд┐рдЬ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдЗрд╕ рддрдереНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐ рдХреЛрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИ, рдЖрдк рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдПрдХ рдЯрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, Xcode рдореМрдЬреВрджрд╛ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕
Edit -> Refactor ... -> Convert to Objective-C ARC ... - рдХрд╛ рдЪрдпрди
рдХрд░реЗрдВ рдФрд░ Xcode рдЖрдкрдХреЛ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЕрдкрдирд╛ рдХреЛрдб рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдмрд╣реБрдд рдЕрдбрд╝рдЪрдиреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИред
рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдХреЛрдХреЛ рдХреЗ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдирд┐рдпрдо рдмрд╣реБрдд рд╕реАрдзреЗ рд╣реИрдВред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
1. рдпрджрд┐ рдЖрдк
рдХрд┐рд╕реА рд╡рд╕реНрддреБ
рдХреЛ рдЖрдмрдВрдЯрд┐рдд, рдирдпрд╛, рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдпрд╛
рдЕрдиреБрд░рдХреНрд╖рдг рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ
рд░рд┐рд▓реАрдЬрд╝ рдпрд╛
рдСрдЯреЛрд░реЗрд▓рд┐рдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕рдХреА рднрд░рдкрд╛рдИ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред
2. рдпрджрд┐ рдЖрдкрдХреЛ рдЦрдВрдб 1 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд╕реНрддреБ рд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдкрд░реНрдпрд╛рдкреНрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ "рдЬреАрд╡рд┐рдд" рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ
рдЕрдиреБрд░рдХреНрд╖рдг рдпрд╛
рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрд╛рдж рдореЗрдВ рдореБрдЖрд╡рдЬрд╛ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡реЗ (рдирд┐рдпрдо) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рдореЗрдВ рдмрд╣реБрдд рдпреЛрдЧрджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
Foo *foo = [[Foo alloc] init]; [foo something]; return;
рд╕рдВрдХрд▓рдХ рдПрдХ рдЕрд╕рдВрддреБрд▓рд┐рдд
рдЖрд╡рдВрдЯрди рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИ:
Foo *foo = [[Foo alloc] init]; [foo something]; [foo release]; return;
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдВрдХрд▓рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ
рд░рд┐рд▓реАрдЬрд╝ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рдирдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ:
Foo *foo = [[Foo alloc] init]; [foo something]; objc_release(foo); return;
рдпрд╣рд╛рдВ рдЖрдк рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЬрдм -
рд░рд┐рд▓реАрдЬ рдХреЛ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ
objc_release рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕рдВрджреЗрд╢ рддрдВрддреНрд░ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЧрддрд┐ рдореЗрдВ рдорд╛рдореВрд▓реА рд╡реГрджреНрдзрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рди рд╕реЗ рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдХрдИ рдХреЛрдХреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЦрдВрдб 2 рд╕реЗ "рдХрд╛рдлреА рд▓рдВрдмреЗ рд╕рдордп" рд╢рдмреНрдж рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЪрд░ рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред рдЖрдорддреМрд░ рдкрд░ рд╣рдо рд╕реНрдерд╛рдиреАрдп рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдкрд░
рд░рдЦ -
рд░рдЦрд╛рд╡ рдФрд░
рд░рд┐рд▓реАрдЬ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ:
Foo *foo = [self foo]; [foo bar]; [foo baz]; [foo quux];
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд┐рдореНрди рдирд┐рд░реНрдорд╛рдг рдХрд╛рдлреА рдЦрддрд░рдирд╛рдХ рд╣реИ:
Foo *foo = [self foo]; [foo bar]; [foo baz]; [self setFoo: newFoo]; [foo quux];
рдпрд╣ -
foo рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреЗрдЯрд░ рд╣реЛрдиреЗ рд╕реЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдореВрд▓реНрдп рд╡рд╛рдкрд╕ рдирд╣реАрдВ рд╣реЛрдиреЗ рддрдХ
рд░рд┐рдЯреЗрди / рдСрдЯреЛрд░реЗрд▓рд┐рдЬ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдХрд╛рдордХрд╛рдЬреА рд╡рд┐рдХрд▓реНрдк рд╣реИ, рд▓реЗрдХрд┐рди рдХрдИ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдореГрддрд┐ рдХрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, ARC рдпрд╣рд╛рдБ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
Foo *foo = objc_retainAutoreleasedReturnValue([self foo]); [foo bar]; [foo baz]; [self setFoo: newFoo]; [foo quux];
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рднрд▓реЗ рд╣реА рдЖрдкрдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреЗрдЯрд░ рд▓рд┐рдЦрд╛ рд╣реЛ, ARC рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛ рджреЗрдЧрд╛:
- (Foo *)foo { return objc_retainAutoreleaseReturnValue(_foo); }
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ! рд╣рдо, рдкрд╣рд▓реЗ рдХреА рддрд░рд╣,
рдЧреЗрдЯреНрдЯрд░ рдореЗрдВ
рдЕрдиреБрд░рдХреНрд╖рдг / рдСрдЯреЛрд░реЗрд▓реЗрдЬ рд╕рдВрдпреЛрдЬрди рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ
рдЕрдиреБрд░рдХреНрд╖рдг / рд░рд┐рд▓реАрдЬ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдирд┐рд╕реНрд╕рдВрджреЗрд╣ рдЕрдкреНрд░рднрд╛рд╡реА рд╣реИ!
рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдорд╛рдк рдХреЗ рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛред рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдЖрд░рд╕реА (рдЕрдиреБрдХреВрд▓рди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП) рдХреЗрд╡рд▓ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╡рд┐рд╢реЗрд╖ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рд░рд┐рдЯреЗрди рдФрд░
рд░рд┐рд▓реАрдЬ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпреЗ рдХреЙрд▓ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЛ рдЦрддреНрдо рдХрд░ рджреЗрддреА рд╣реИрдВред
рдЬрдм
objc_retainAutoreleaseReturnValue рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдЯреИрдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рдкрддреЗ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЙрд╕реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рд╕рдВрдХрд▓рди рдЕрдиреБрдХреВрд▓рди рдЪрд╛рд▓реВ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде,
objc_retainAutoreleaseReturnValue рдХреЛ
рдХреЙрд▓ рдХрд░рдирд╛ рдЯреЗрд▓-рдХреЙрд▓ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХрд╛рдо рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдЯрд╛рдЗрдо рд░рд┐рдЯрд░реНрди рдПрдбреНрд░реЗрд╕ рдХреЗ рдЗрд╕ рдкрд╛рдЧрд▓ рдЪреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣
рдСрдЯреЛрд░реЗрд▓рд┐рдЬ рднреЗрдЬрдиреЗ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рд╕рдВрджреЗрд╢ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИред рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рдкреВрд░рд╛ рдирд┐рд░реНрдорд╛рдг, рдЧреЗрдЯреНрдЯрд░ рдореЗрдВ рдПрдХ рд╕рд┐рдВрдЧрд▓ рд░рд┐рдЯреЗрди рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рдореЗрдВ рдПрдХ рд╕рд┐рдВрдЧрд▓
рд░рд┐рд▓реАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИред
рдиреЛрдЯ: рдпрд╣ рдЕрдиреБрдХреВрд▓рди рдЙрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдд рд╣реИ рдЬреЛ ARC рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдРрд╕реА рдШрдЯрдирд╛ рдореЗрдВ рдЬрд┐рд╕рдХрд╛ рдЧреЗрдЯреНрдЯрд░ рдПрдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЙрдкрд░реЛрдХреНрдд рдзреНрд╡рдЬ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реИ рдФрд░ рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛
рдЕрдиреБрд░рдХреНрд╖рдг / рд░рд┐рд▓реАрдЬ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдРрд╕реА рдШрдЯрдирд╛ рдореЗрдВ рдЬрд┐рд╕рдХрд╛ рдЧреЗрдЯреНрдЯрд░ рдПрдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЙрд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЧреЗрдЯреНрдЯрд░ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдХреЛрдб рдкрд░ рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рддреБрд░рдВрдд рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖ рд░рдирдЯрд╛рдЗрдо рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП
рд░рд┐рдЯреЗрди / рдСрдЯреЛрд░реЗрд▓рд┐рдЬ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рдкреВрд░реНрдг рд╕рдВрдпреЛрдЬрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдХреБрдЫ рдкреНрд░рджрд░реНрд╢рди рдЦреЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдЕрднреА рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рд╣реИред
рдЙрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░, ARC рдЗрдВрдЬрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП
-Dealloc рдкрджреНрдзрддрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдпрд╛ рдЙрд╕рдХреЗ рд╕рднреА рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдЪрд░ рдХреЛ рдореБрдХреНрдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЕрднреА рднреА рд╣реИ
-Dealloc (рдФрд░ рдпрд╣ рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ), рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡рд░реНрдЧ рдЖрд╡реГрддреНрддрд┐ рдЪрд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ (рдпрд╛ рд╕рдВрднрд╛рд╡рдирд╛) рдирд╣реАрдВ рд╣реИред рдПрдЖрд░рд╕реА рдЕрдВрдд рдореЗрдВ рдПрдХ
[рд╕реБрдкрд░ рдбреАрд▓реЙрдХ] рдХреЙрд▓ рднреА
рдбрд╛рд▓реЗрдЧрд╛ , рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрд╛рдПрдЧрд╛ред
рд╣рдо рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИред
рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрдорд╛рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ:
- (void)dealloc { [ivar1 release]; [ivar2 release]; free(buffer); [super dealloc]; }
рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдмрд╕ рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ:
- (void)dealloc { free(buffer); }
рдпрджрд┐ рдЖрдкрдХреА
-dealloc рд╡рд┐рдзрд┐ рд╕рд┐рд░реНрдл рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЪрд░ рдХреЛ рдореБрдХреНрдд рдХрд░рддреА рд╣реИ, рддреЛ рдпрд╣ рдирд┐рд░реНрдорд╛рдг (ARC рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рдЖрдкрдХреЗ рд▓рд┐рдП рд╡рд╣реА рдХрд░реЗрдЧрд╛ред
рд▓реВрдкреНрд╕ рдФрд░ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХрдПрдЖрд░рд╕реА рдХреЛ рдЕрднреА рднреА рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд░рд┐рдкрддреНрд░ рд▓рд┐рдВрдХ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдПрдЖрд░рд╕реА рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓рд┐рдВрдХ рди рдХреЗрд╡рд▓ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ рд░рдЦрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╡реЗ "рд▓рд╛рдЗрд╡" рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдЬрд┐рд╕ рд╡рд╕реНрддреБ рдХреЛ рд╡реЗ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╣ рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ
рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рддреА рд╣реИред рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдЬрд╝реАрд░реЛрдЗрдВрдЧ рдореГрдд рд╕рдВрдХреЗрдд рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рдФрд░ рдЖрд╡реЗрджрди рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЕрд╢рдХреНрдд рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмрд╕ рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп
__weak рдЙрдкрд╕рд░реНрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдБ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
@interface Foo : NSObject { __weak Bar *_weakBar; }
рд╕реНрдерд╛рдиреАрдп рдЪрд░ рд╕рдорд╛рди рддрд░реАрдХреЗ рд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ:
__weak Foo *_weakFoo = [object foo];
рдЖрдк рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдорд┐рдд рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ рдЙрдирдХрд╛ рдореВрд▓реНрдп рд╕реНрд╡рддрдГ
рд╢реВрдиреНрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛:
[_weakBar doSomethingIfStillAlive];
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐
__weak рд╡реИрд░рд┐рдПрдмрд▓ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд╕рдордп рд╢реВрдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рдПрдХ рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рд╡рд╕реНрддреБ рдХреЛ рдирд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдзрд╛рдЧрд╛ рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИред
рд╣рдо рджреГрд╖реНрдЯрд╛рдВрдд рджреЗрдВрдЧреЗред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЧрд▓рдд рд╣реИ:
if(_weakBar) [self mustNotBeNil: _weakBar];
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рд╕реНрдерд╛рдиреАрдп рдордЬрдмреВрдд рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдлрд┐рд░ рдЬрд╛рдВрдЪреЗрдВ:
Bar *bar = _weakBar; if(bar) [self mustNotBeNil: bar];
рдпрд╣ рдкреВрд░реЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд▓рд╛рдЗрд╡ (рдФрд░ рдЧреИрд░-
рд╢реВрдиреНрдп рдЪрд░) рдмрдирд╛рдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ
рдмрд╛рд░ рдПрдХ рдордЬрдмреВрдд рд╕рдВрджрд░реНрдн рд╣реИред
рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдПрдЖрд░рд╕реА рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдореЗрдВ рд╕рдВрджрд░реНрдн рд▓реЗрдЦрд╛ рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЗ рдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмреАрдЪ рдШрдирд┐рд╖реНрда рд╕рдордиреНрд╡рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рдЬреЛ
рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ рдФрд░
рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ рд╡рд╣ рдПрдХ рдЕрд╢рдХреНрдд рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн рдХреА рд╡рд╕реНрддреБ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрд╕рд╛рдорд╛рдиреНрдп, рдХреБрдЫ рдХреЛрдХреЛ рд╡рд░реНрдЧ рдЗрд╕рд╕реЗ рдЧреНрд░рд╕реНрдд рд╣реИрдВ (рдЬреИрд╕реЗ
NSWindow )ред
рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдпрджрд┐ рдЖрдк рдЗрд╕реА рддрд░рд╣ рдХреА рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддреБрд░рдВрдд рдПрдХ рд╕рдВрджреЗрд╢ рдЬрд╛рд░реА рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛ рджреЗрдЧрд╛, рдЬрдм рдпрд╣ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ:
objc[2478]: cannot form weak reference to instance (0x10360f000) of class NSWindow
рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк
__weak рдХреЗ рдмрдЬрд╛рдп
__unsafe_unretain рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдПрдХ рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрдирд╛рдПрдЧрд╛ рдЬреЛ рд░реАрд╕реЗрдЯ
рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдк рдЗрд╕ рдкреЙрдЗрдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░ рджреЗрдВ) рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБ рдХреЗ
рдмрд╛рдж ред
рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ: рдЧреИрд░-рдЕрд╢рдХреНрдд рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЖрдЧ рд╕реЗ рдЦреЗрд▓рддреЗ рд╣реИрдВред
рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 10.6 рдФрд░ рдЖрдИрдУрдПрд╕ 4 рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрди рдУрдПрд╕
(рдЕрдиреБрд╡рд╛рджрдХ рдХреЗ рдиреЛрдЯ рдореЗрдВ рдЕрд╢рдХреНрдд рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ
: рдореИрдВ рдПрдЖрд░рд╕реА рдЫрд┐рджреНрд░рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕ рдорд╛рд░реНрдЧ рдХреЗ рдЕрд░реНрде рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╕рдордЭрддрд╛ рд╣реВрдВред рд╢рд╛рдпрдж рд▓реЗрдЦрдХ рдиреЗ рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд╢реВрдиреНрдп рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЯрд╛рдЗрдкреЛ рдмрдирд╛рдпрд╛ рд╣реИред рдЧреИрд░-рд╢реВрдиреНрдпрд┐рдВрдЧ рдХрдордЬреЛрд░ рд╕рдВрджрд░реНрдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)редрд╕рднреА рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдХреЛ
__unsafe_unretain рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЕрд╢рдХреНрдд рдХрдордЬреЛрд░ рд▓рд┐рдВрдХ рдмрд╣реБрдд рдЦрддрд░рдирд╛рдХ рд╣реИрдВ, рдпрд╣ рд╕реАрдорд╛ рдЗрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдПрдЖрд░рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЖрдХрд░реНрд╖рдг рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░ рджреЗрддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдПред
рдпрд╣рд╛рдБ рдореИрдВ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╕рдорд╛рдкреНрдд рдХрд░реВрдБрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрд╛рда рдмрдбрд╝рд╛ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ред рдореИрдВрдиреЗ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░реНрд╡реЛрддреНрддрдо рддрд░реАрдХреЗ рд╕реЗ рд░реВрд╕реА рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬреЛ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ 99% рд╕рд╛рдордЧреНрд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рд╣реИред
рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рджреЗрдЦрддреЗ рд░рд╣реЗрдВред