рдУрдУрдкреА рдХреЗ рдЙрджреНрднрд╡ рдХрд╛ рдореБрдЦреНрдп рд╕рд┐рджреНрдзрд╛рдВрдд
рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдФрд░ рдЙрд╕рдХреЗ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЗрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ, рд╕рдВрд░рдЪрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдореВрд░реНрдд рдХрд░рдиреЗ рдХреЗ рдирдП рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдХрд░рддреА рд╣реИред рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирдП рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди, рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди, рдирдИ рднрд╛рд╖рд╛рдПрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдкреНрд░реЛрдЧреНрд░рд╛рдо (рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ) рдХреЗ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ CALL \ RET рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдФрд░ рд╕реНрдЯреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдХреЛ рд╡рд░реНрддрдорд╛рди рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рдж рдЕрдЧрд▓реЗ рдПрдХ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдордирдорд╛рдирд╛ рдХреЗ рдкрддреЗ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛, рдЗрд╕рдХреЗ рдмрд╛рдж рд╡рд╛рдкрд╕реА)ред рдлрд┐рд░, рдореЙрдбреНрдпреВрд▓ рдкреНрд░рддрд┐рдорд╛рди (рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдПрдХ рдЕрд▓рдЧ рдЕрдиреБрд╡рд╛рдж рдЗрдХрд╛рдИ рд╣реИ), рдЬрд┐рд╕рдиреЗ рджреЛ-рдЪрд░рдг рдЕрдиреБрд╡рд╛рдж рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛: рдореЙрдбреНрдпреВрд▓ рдХрд╛ рд╕рдВрдХрд▓рди, рдФрд░ рдлрд┐рд░ рдЙрдирдХреА рд╡рд┐рдзрд╛рдирд╕рднрд╛ (рд╕реНрдерд┐рд░ рдпрд╛ рдЧрддрд┐рд╢реАрд▓) рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдореЙрдбреНрдпреВрд▓ рдореЗрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдФрд░ рдЗрд╕реЗ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХреЗ рдХрд╛рд░рдг, 1960 рдХреЗ рджрд╢рдХ рдореЗрдВ рдПрдХ рдирдП, рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреНрд░рддрд┐рдорд╛рди рдмрдирдиреЗ рд╢реБрд░реВ рд╣реЛ рдЧрдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЫреЛрдЯреЗ рдШрдЯрдХреЛрдВ - рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдПрдХ рджреВрд╕рд░реЗ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдХрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ (рд╡рд╕реНрддреБрдУрдВ) рдХреА рдмрд╛рддрдЪреАрдд рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ (рддрдерд╛рдХрдерд┐рдд рд╡рд░реНрдЧ) рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ (рд╡рд░реНрдЧ) рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рджреЛ рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдбреЗрдЯрд╛ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ (рдЕрдкрд░рд┐рд╡рд░реНрддрдирд╡рд╛рджреА, рд╕рджрд╕реНрдп) рдФрд░ рджрд┐рдирдЪрд░реНрдпрд╛ рдХрд╛ рдПрдХ рд╕реЗрдЯ (рд╡рд┐рдзрд┐рдпрд╛рдБ) рдЬреЛ рдЙрдирдХреА рд╕реЗрд╡рд╛ рдХрд░реЗрдЧреАред
рдПрдХ рд╡рд░реНрдЧ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрд╡рд░реВрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрдВрддрд░реНрдирд┐рд░реНрдорд┐рдд (рднрд╛рд╖рд╛) рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдФрд░ / рдпрд╛ рдЕрдиреНрдп рд╡рд░реНрдЧреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╕реА рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рджрд┐рдирдЪрд░реНрдпрд╛ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ - рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рд╕реЗрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХред
рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдореБрдЦреНрдп рд▓рд╛рдн рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд▓рд┐рдЦреЗ рдЧрдП рд▓реЛрдЧреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирдИ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереА (рдЗрдирд░рд┐рдпрд░реНрд╕ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ), рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рддрд░реАрдХреЛрдВ рдХрд╛ рд╕реЗрдЯ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИред рд╕реАрдзреЗ рд╡рд░реНрдЧ рдбреЗрдЯрд╛ (рдЗрд╕рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛) рдХреА рдЕрд╕рдВрднрд╡рддрд╛ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рджрд░реНрд╢рд╛рддреА рд╣реИред рдЖрдХреГрддрд┐ рдХрдХреНрд╖рд╛ рдФрд░ рдЙрд╕рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИред рдЗрд╕рдореЗрдВ рдЯрд╛рдЗрдк рдлрд╝реНрд▓реЛрдЯ рдХрд╛ рдПрдХ рдЗрдирд╡реЗрд░рд┐рдпрдВрдЯ x рдФрд░ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (рд╡рд┐рдзрд┐) doubleX рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдЙрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЙрд╕рдиреЗ рд╡рд░реНрдЧ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ), рд▓реЗрдХрд┐рди, рд╕реНрдерд┐рддрд┐ рд╕реЗ, рдЗрд╕ рд╡рд╕реНрддреБ рдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдЕрдЬреНрдЮрд╛рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдЯреЛ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдХреА рд╕реВрдЪреА рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдореВрд╡ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рд╕реВрдЪреА рдореЗрдВ рдХреЗрд╡рд▓ рдСрдЯреЛ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░реНрд╕ рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдлреЛрд░реНрдб (рдФрд░ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА) рдлреЛрд░реНрдб рдФрд░ рд╕реБрдмрд╛рд░реВ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рднреА рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рдмрд╣реБрд░реВрдкрддрд╛ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕ рддрдереНрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдХрд┐ рдЬрдм рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрджреЗрд╢ рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдРрд╕рд╛ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╡рд╕реНрддреБ рдЕрдкрдиреЗ рд╡рд░реНрдЧ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреА рд╣реИ, рди рдХрд┐ рдЗрд╕ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЖрдзрд╛рд░ рд╡рд░реНрдЧред
рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рднрд╛рд╖рд╛ Simula67 рдереАред рдлрд┐рд░ рд╕реНрдорд╛рд▓рдЯрд╛рдХ рдЖрдпрд╛ред рдФрд░ 80 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╕реА ++ рдиреЗ рдЖрдХрд╛рд░ рд▓реЗрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ - рдЖрдзреБрдирд┐рдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдореБрдЦреНрдп рднрд╛рд╖рд╛ред 90 рдХреЗ рджрд╢рдХ рдореЗрдВ рдЗрд╕рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╕реБрдзрд╛рд░ рдиреЗ рдХрдИ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЛ рдЬрдиреНрдо рджрд┐рдпрд╛, рдФрд░ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рднрд╛рд╖рд╛ рд╕рд╣рд┐рдд рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрдзреБрдирд┐рдХ рджреГрд╖реНрдЯрд┐ рдкрд░ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рднрд╛рд╡ рдкрдбрд╝рд╛ред
рдереЛрдбрд╝рд╛ рдЗрддрд┐рд╣рд╛рд╕
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА 80 рдХреЗ рджрд╢рдХ рдореЗрдВ рд╕реНрдореЙрд▓рдЯрд╛рдХ рдХреА рдУрд░ рд╕реА рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрддреНрдкрдиреНрди рд╣реБрдЖред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдореЗрдВ рдирдП рд╕рд┐рдВрдереИрдЯрд┐рдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ (рдЬреЛ рдХреЛрдб рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реБрдП, рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдзрд╛рд░рдг рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛), рд╕рд╛рде рд╣реА рдПрдХ рд░рдирдЯрд╛рдЗрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рдЗрди рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЙрд▓) рд╢рд╛рдорд┐рд▓ рдереЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╢реБрд░реВ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛ рдРрдб-рдСрди рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рдерд╛ред рдПрдХ рдЕрд░реНрде рдореЗрдВ, рдпрд╣ рдЕрднреА рднреА рдорд╛рдорд▓рд╛ рд╣реИ: рдЖрдк рд╢реБрджреНрдз рд╕реА рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА (рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ) рд╕реЗ рдХреБрдЫ рдирд┐рд░реНрдорд╛рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдореЗрдВ рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╕рдм C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред 1988 рдореЗрдВ, NeXT (рдФрд░ рдмрд╛рдж рдореЗрдВ Apple) рдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛ рд▓рд╛рдЗрд╕реЗрдВрд╕ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХрд▓рдХ рдФрд░ рдПрдХ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрд╕рдбреАрдЖрд░) рд▓рд┐рдЦрд╛ред 1992 рдореЗрдВ, GNU рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рднрд╛рд╖рд╛ рдФрд░ рд╕рдВрдХрд▓рдХ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП OpenStep рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдПред рддрдм рд╕реЗ, рдЬреАрд╕реАрд╕реА рдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рд╣реИред NeXT рдЦрд░реАрджрдиреЗ рдХреЗ рдмрд╛рдж, Apple рдиреЗ рдЙрдирдХреЗ SDK (рд╕рдВрдХрд▓рдХ, рдкреБрд╕реНрддрдХрд╛рд▓рдп, IDE) рдХреЛ рдЙрдирдХреЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ред рдХреЛрдб рдХреЗ рд▓рд┐рдП IDE рдХреЛ Xcode рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛, рдФрд░ GUI рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд┐рд▓реНрдбрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред GUI рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдХреЛ рд░реВрдкрд░реЗрдЦрд╛ (рдФрд░ рди рдХреЗрд╡рд▓) рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рд╣реИред
рдЙрджреНрджреЗрд╢реНрдп-рд╕реА
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЙрдбреНрдпреВрд▓ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдПрдХреНрд╕рдЯреЗрдВрд╢рди ".m" рд╣реЛрддрд╛ рд╣реИ (рдпрджрд┐ C ++ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрд╛ рдорд┐рд╢реНрд░рдг рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди ".mm" рд╣реИ)ред рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ ".h" рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╕рднреА рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рд╡рд┐рд╢реЗрд╖ рдорд╣рддреНрд╡ рдЖрдИрдбреА рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИ (рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп *)ред рдирд▓ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдиреАрд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдХреЛ рдЖрдИрдбреА рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ: рдЖрдк рдХреИрд╕реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдИрдбреА рдХреЗ рддрд╣рдд рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд╡рд░реНрдЧ рдХрд┐рд╕ рд╡рд░реНрдЧ рдХрд╛ рд╣реИ? рдпрд╣ рдЖрдЗрд╕рд╛ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ NSObject (рдПрдирдПрд╕ рдЙрдкрд╕рд░реНрдЧ рдиреЗрдХреНрд╕рдЯреА рд╕реНрдЯреЗрдк рдХреЗ рд▓рд┐рдП рдЦрдбрд╝рд╛ рд╣реИ) рдХреЗ рд╡рд░реНрдЧ рдХреЗ рдХрд┐рд╕реА рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред Isa invariant рдЖрд░рдХреНрд╖рд┐рдд рд╡рд░реНрдЧ рдХрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдФрд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд╡рд░реНрдЧ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ, рд╕рд╛рде рд╣реА рдЙрди рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЬреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдиреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдкрддреЗ (рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╕реНрдерд╛рдиреАрдп рд╕реВрдЪреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ)ред рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рдЬреЛ рдХрд┐ рд╕реА рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрджреЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ, рдПрдХ @ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, @рдкреНрд░реЛрдХреЛрд▓, рдЪрдпрдирдХрд░реНрддрд╛ , рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕реАрдорд┐рдд рджрд╛рдпрд░реЗ (@ рдкрд╛рдЗрд░реЗрдХреНрдЯ, рдкреНрд░реЛрдЯреЗрдХреНрдЯреЗрдб ) рд╡рд╛рд▓реЗ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдирд╛рдо рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдХреЛрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ NSString рд╡рд░реНрдЧ рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ @ "рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реНрдерд┐рд░рд╛рдВрдХ "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реАред BOOL рдкреНрд░рдХрд╛рд░ (рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдЪрд╛рд░) рдирд┐рд░рдВрддрд░ рдорд╛рди YES рдФрд░ NO рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА (рдЬреЛ C рд╕реЗ рднрд┐рдиреНрди рд╣реИрдВ рдФрд░ objc / objc.h рд╣реЗрдбрд░ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ) рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рднреА рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рдиреАрдЪреЗ рд╕реВрдЪреАрдмрджреНрдз рд╣реИрдВ:
- рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рд╡рд░реНрдЧ рдпрд╛ рд╢реНрд░реЗрдгреА (рд╢реНрд░реЗрдгреА - рд╢реНрд░реЗрдгреА рдХреЛ рдмрд┐рдирд╛ рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛) рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ
- @ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд░реНрдЧ рдпрд╛ рд╢реНрд░реЗрдгреА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ
- @protocol рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ (рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ C ++ рд╡рд░реНрдЧ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ)
- рдЕрдВрдд рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ, рд╢реНрд░реЗрдгреА рдпрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдШреЛрд╖рдгрд╛рдкрддреНрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
- @ рдЙрдкрдпреБрдХреНрдд рдХрдХреНрд╖рд╛ рдХреЗ рдЖрд╡реЗрдЧреЛрдВ рдХрд╛ рджрд╛рдпрд░рд╛ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ (C ++ рдХреЗ рд╕рдорд╛рди) рддрдХ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ
- рд╕рдВрд░рдХреНрд╖рд┐рдд рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╣реИред рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╡рд░реНрдЧ рдЕрдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рдХрд╛ рджрд╛рдпрд░рд╛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ (C ++ рдХреЗ рд╕рдорд╛рди)
- @ рд░рд┐рдкрдмреНрд▓рд┐рдХ рджреГрд╢реНрдпрддрд╛ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣рдЯрд╛рддрд╛ рд╣реИ (C ++ рдХреЗ рд╕рдорд╛рди)
- рд╕рдВрднрд╡ рдЕрдкрд╡рд╛рдж рдкреАрдврд╝реА рдХреЗ рд╕рд╛рде рдмреНрд▓реЙрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ (C ++ рдХреЗ рд╕рдорд╛рди)
- @throw рдПрдХ рдЕрдкрд╡рд╛рдж рдСрдмреНрдЬреЗрдХреНрдЯ (C ++ рдХреЗ рд╕рдорд╛рди) рдлреЗрдВрдХрддрд╛ рд╣реИ
- рдкрдХрдбрд╝ () рдкрд┐рдЫрд▓реЗ рдкреНрд░рдпрд╛рд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рдЙрдард╛рдП рдЧрдП рдЕрдкрд╡рд╛рдж рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ (C ++ рдХреЗ рд╕рдорд╛рди)
- рдЕрдВрдд рдореЗрдВ рдмреНрд▓реЙрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рдж рдкрд┐рдХрдЕрдк рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдХреЛрдИ рдЕрдкрд╡рд╛рдж рди рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реЛ
- рд╡рд░реНрдЧ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП @class рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк (рдХреЗрд╡рд▓ рдирд╛рдо (C ++ рдХреЗ рд╕рдорд╛рди))
- рдЪрдпрдирдХрд░реНрддрд╛ (method_name) рд╡рд┐рдзрд┐ рдирд╛рдо method_name рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рдЪрдпрдирдХрд░реНрддрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
- @protocol (рдкреНрд░реЛрдЯреЛрдХреЙрд▓_name) рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдкреНрд░реЛрдЯреЛрдХреЙрд▓_рдирд╛рдо рд╣реИ
- @encode (type_spec) рдПрдХ рд╡рд░реНрдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ type_spec рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
- @synchronized () рд╕рдордп рдореЗрдВ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ рдХреЗрд╡рд▓ рдПрдХ рдереНрд░реЗрдб рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреЛрдб рдХреЗ рдПрдХ рдмреНрд▓реЙрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╕рдВрджреЗрд╢ рд╕реЗрд╡рд╛
рдХрд┐рд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЗрд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐ рдХреЗ рд╕рдорд╛рди рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдЪрдпрдирдХрд░реНрддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреИрдХреЗрдЬ рдХрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
[receiver method];
рд╕рдВрджреЗрд╢ рдореЗрдВ, рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[receiver method: 20.0 : 30.0];
рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдПрдХ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рд╕реЗ рдкрд╣рд▓реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рддрдиреЗ рдХреЙрд▓реЛрди - рдЗрддрдиреЗ рд╕рд╛рд░реЗ рдкреИрд░рд╛рдореАрдЯрд░ред рдкреНрд░рддреНрдпреЗрдХ рдРрд╕реЗ рдХреЛрд▓реЛрди-рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рдж рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдЬрд╛рд░реА рд░рд╣ рд╕рдХрддрд╛ рд╣реИ:
[receiver methodWithFirstArgument: 10 andSecondArgument: 20];
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рддрд░реНрдХреЛрдВ рдХреЗ рд╕рд╛рде рддрд░реАрдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:
[receiver undefinedNumberParameters: one, two, three, four, five, six, seven];
рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛, рдХрд┐рд╕реА рднреА C рдлрд╝рдВрдХреНрд╢рди рдХреА рддрд░рд╣, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ (рд╢рд╛рдпрдж рд╢реВрдиреНрдп) рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
BOOL booleanValue; booleanValue = [reveiver method];
рд╢реВрдиреНрдп рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп рдЬреЛ рдЙрд╕ рд╡рд░реНрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рдЖрджреЗрд╢рд┐рдд рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдерд╛, рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ, рдпрджрд┐ рдкрдХрдбрд╝рд╛ рдирд╣реАрдВ рдЧрдпрд╛, рддреЛ рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдЕрдирд┐рдпреЛрдЬрд┐рдд рд╕рдорд╛рдкреНрддрд┐ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреЛрдИ рджреА рдЧрдИ рд╡рд╕реНрддреБ рд╕рдВрджреЗрд╢ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрддреА рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЖрдк рдирд┐рдореНрди рдХреЛрдб рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
if ([anObject respondsToSelector: @selector(myMethodWith2Argumets::)]) { // [anObject myMethodWith2Argumetns: @тАЭfirstтАЭ : @тАЭsecondтАЭ]; } else { // }
рдореИрд╕реЗрдЬрд┐рдВрдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ
рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рд╕реА-рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд╕рд╛рде рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ:
id objc_msgSend(id receiver, SEL method, ...);
рдПрд╕рдИрдПрд▓ рдкреНрд░рдХрд╛рд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЪрд╛рд░ рдХрд╛рд╕реНрдЯ * рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЗрдВрдЯрд┐рдореЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд░рди рдХреЗ рд╕рдордп рдореЗрдВ рд╕рднреА рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрдпрдирдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░рд┐рд╕реАрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЖрдЗрд╕рд╛ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЬрдм рдлрд╛рдЙрдВрдбреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬреЛ рдХреЛрдХреЛ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╣реИ, рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЛ NSObject рдХреНрд▓рд╛рд╕ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдЗрд╕рд╛ рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ), рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдХреЗ рд╕реВрддреНрд░реЛрдВ рдХреА рд╕реНрдерд╛рдиреАрдп рд╕реВрдЪреА рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рдХреНрд▓рд╛рд╕ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рд╕рдВрджреЗрд╢ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдЪрдпрдирдХрд░реНрддрд╛ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЙрд╕ рд╡рд░реНрдЧ рдХреА рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдИрдбреА (рдЙрд╕рдХреЗ рдЪрд╛рд▓рдХрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ) рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдирд┐рд░реНрджрд┐рд╖реНрдЯ objc_msgSend () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВред рд╕рдВрджреЗрд╢ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд▓реМрдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рд░рд┐рд╕реАрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдпрд╣ рдЪрдпрдирдХрд░реНрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ objc_msgSend () рдлрд╝рдВрдХреНрд╢рди рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдХреЗ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рд╕реНрдХреИрди рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреЙрд▓:
[receiver ddObject: otherObject];
рдкреНрд░рд╕рд╛рд░рдг:
objc_msgSend(receiver, 12, otherObject);
рдЪреВрдВрдХрд┐ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрдпрдирдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ 12 рд╕реНрдЯреНрд░рд┐рдВрдЧ "рдПрдбрдСрдмреНрдЬреЗрдХреНрдЯ:" рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, objc_msgSend () рдлрд╝рдВрдХреНрд╢рди рд░рд┐рд╕реАрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ рдФрд░, рдЗрд╕реЗ рдвреВрдВрдврддрд╛ рд╣реИ (рдЗрд╕реЗ NSArray рд╡рд░реНрдЧ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдиреЗ рджреЗрдВ рдЬреЛ рдЪрдпрдирдХрд░реНрддрд╛ 12 рдХреЗ рд╕рд╛рде рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ), рдкреНрд░рдХрд╛рд░ рдХреА рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ:
addObject(receiver, otherObject);
рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛
рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рд╕реЗ addObject рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рдерд╛:
- (void)addObject: (id)otherObject;
рдпрд╣реА рд╣реИ, рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд┐рдпрд╛ред рд▓реЗрдХрд┐рди, рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐рдпрд╛рдБ рд░реВрдЯреАрди рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдбреЗрдЯрд╛ рд╕реЗрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреА рд╣реИрдВ, рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рдкрддреЗ рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдпрд╣ рд╢реВрдиреНрдп ("-") рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╡рд┐рдзрд┐ рдХреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдкрд╣рд▓рд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреА рд╡рд┐рдзрд┐ (рд╕рд╛рдордиреЗ рдорд╛рдЗрдирд╕ рдХреЗ рд╕рд╛рде) рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ (рдпрд╛ рдЙрджрд╛рд╣рд░рдг) рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдХреБрдЫ рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рдзрд┐ рдХреЗ рд╢рд░реАрд░ рдореЗрдВ, рдбреЗрдЯрд╛ рд╕реВрдЪрдХ (рдпрд╛ рд╕рдВрджреЗрд╢ рдХреЛ рднреЗрдЬреЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкрддрд╛) рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕реВрдЪрдХ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рд╕реНрд╡рдпрдВ (рд╕реА ++ рдореЗрдВ рдЗрд╕ рдХреЗ рдЕрдиреБрд░реВрдк) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИ, рдФрд░ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рд╕реВрдЪрдХ рдЖрд░рдХреНрд╖рд┐рдд рд╢рдмреНрдж рд╕реБрдкрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрдпрдирдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдЪрдпрдирдХрд░реНрддрд╛ рдирд┐рд╣рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ _cmd рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рднреА рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, Objective-C рдореЗрдВ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЖрднрд╛рд╕реА рдХреАрд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдФрд░ рд╣рдореЗрд╢рд╛ рдЧрддрд┐рд╢реАрд▓ рдмрд╣реБрд░реВрдкрддрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреА рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╡рд┐рдзрд┐ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдкреНрд▓рд╕ рдЪрд┐рд╣реНрди ("+") рдбрд╛рд▓рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреЛ рдПрдХ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдирд┐рд╣рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡рдпрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ (рдпрд╣ C ++ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ)ред рдФрд░ рд╡рд╕реНрддреБ рдХреЗ рдЖрдИрдП рдХреЗ рдмрд┐рдирд╛ рд╕реНрд╡рдпрдВ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛, рд╕реБрдкрд░ рдкреЙрдЗрдВрдЯрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╛ рддреЛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд┐рд╕реА рднреА рд╡рд┐рдзрд┐ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЗрд╕ рддрд░рд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
-|+ (< >) [ : (< >) [ [] : (< >)] тАж ]
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
+ (Class)class; + (id)alloc; - (id)init; - (void)addObject: (id)anObject; + (NSString *)stringWithCString: (const char*)aCString usingUncoding: (enum NSStringEncoding)encoding; - (NSString *)initStringWithFormat: (NSString *)format, тАж;
рдпрджрд┐ рд╡рд┐рдзрд┐ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ (рдЖрдИрдбреА рдкреНрд░рдХрд╛рд░) рдпрд╛ рдПрдХ рд╡рд░реНрдЧ (рдХреНрд▓рд╛рд╕ рдкреНрд░рдХрд╛рд░) рд▓реМрдЯрд╛рддреА рд╣реИ, рддреЛ рдЖрдк рдиреЗрд╕реНрдЯреЗрдб рдХреЙрд▓ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[myLabel setText: [[NSString stringWithString: @тАЭHelloтАЭ] stringByAppendingString: @тАЭ worldтАЭ]];
рдпрд╣рд╛рдБ, UIKit рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ UILabel рд╡рд░реНрдЧ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ @ "рд╣реЗрд▓реНрд▓реЛ рд╡рд░реНрд▓реНрдб" рдХреЗ рдмрд░рд╛рдмрд░ рдЗрдВрд╡реЗрд░рд┐рдПрдВрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреЗ рдорд╛рди рдкрд░ рд╕реЗрдЯ рд╣реИред рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ, рдмрджрд▓реЗ рдореЗрдВ, @ "рд╣реИрд▓реЛ" рдФрд░ @ "рджреБрдирд┐рдпрд╛" рдХреЗ рддрд╛рд░ рдХреЛ рдорд┐рд▓рд╛рдХрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИред рдкрд╣рд▓рд╛ @ "рд╣реИрд▓реЛ" рдирд┐рд░рдВрддрд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде NSString рд╡рд░реНрдЧ рдХреЛ рдПрдХ stringWithString рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЙрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдЖрд░рдВрднреАрдХреГрдд NSString рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рджреЗрддрд╛ рд╣реИред рдлрд┐рд░ @ рдСрдмреНрдЬреЗрдХреНрдЯ рджреБрдирд┐рдпрд╛ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ stringByAppendingString рд╕рдВрджреЗрд╢ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рднреЗрдЬрдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо NSString рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд░рд┐рд╕реАрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдорд╛рди рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХ рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗрдЯрдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рднреА рдЖрддрд╛ рд╣реИ: рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ myLabel рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджреЗрд╢ред
рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛
Complex.h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рд╡рд░реНрдЧ рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ:
#import <Foundation/Foundation.h> // NSObject NSString @interface Complex : NSObject { double _re; // double _im; // NSString *_format; // description } - (id)initWithRe: (double)re andIm: (double)im; // + (Complex *)complexWithRe: (double)re andIm: (double)im; // - (Complex *)add: (Complex *)other; // - (Complex *)sub: (Complex *)other; // - (NSString *)format; // _format - (void)setFormat: (NSString *)format; // _format - (double)re; // - (void)setRe: (double)re; - (double)im; - (void)setIm: (double)im; @end
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреВрд░рд╛ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдХреАрд╡рд░реНрдб рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЕрдВрдд рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИред рдкрд╣рд▓рд╛ рдХрджрдо рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ (рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ) рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рд╣реИред рдШреБрдВрдШрд░рд╛рд▓реЗ рдмреНрд░реИрдХреЗрдЯ рдХреЗ рдмрд╛рд╣рд░, рд╡рд┐рдзрд┐рдпрд╛рдВ рдШреЛрд╖рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред рд╡рд┐рд╡рд░рдг рд╡рд┐рдзрд┐ рдПрдХ рдХрд╛рд░рдг рд╕реЗ рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рд╕реЗ рдЧрд╛рдпрдм рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдбреАрд▓рд▓реЙрдХ рдФрд░ рдЗрдирд┐рдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рддрд░рд╣, рд╡рд░реНрдЧ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╡рд░реНрдЧ рдХреА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд╡рд┐рд╡рд░рдг рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╕рдордп, рдЗрд╕рдХреЗ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреА рд╕реНрдерд╛рдиреАрдп рд╕реВрдЪреА рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд╣рд╛рдВ, рд╕рдВрдХрд▓рди рдХреЗ рдмрд╛рдж, рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЗ рдЪрдпрдирдХрд░реНрддрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рднрд╛рдЧ рдореЗрдВ рднреА рдШреЛрд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрд░реНрдерд╛рддреН, init, description рдФрд░ dealloc рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓ рдХрд░реЗрдЧрд╛ред
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБ
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЧрддрд┐рд╢реАрд▓ рдореЗрдореЛрд░реА рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ: 1) рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди (рдЖрд╡рдВрдЯрди рд╕рдВрджреЗрд╢) рдФрд░ 2) рдЗрдиреНрд╡рд░реНрдЯрд░ (рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕) рдХрд╛ рдЖрд░рдВрднреАрдХрд░рдгред
MyClass *myObject = [[MyClass alloc] init]; // MyClass alloc , init myObject
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЗрд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
NSMutableArray *array = [[NSMutableArray alloc] init]; // MyClass *myObject = [[MyClass alloc] init]; // [myObject myMethod]; // [array addObject: myObject]; // MyClass *otherObject = [array getLastObject:]; // , [otherObject myOtherMethod: YES]; // BOOL
рдХреБрдЫ рд╡рд░реНрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЬрд▓реНрджреА рд╕реЗ (рдПрдХ рдЪрд░рдг рдореЗрдВ) рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рддрд░реАрдХреЗ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЙрдирдХреА рдХрдХреНрд╖рд╛ рдХреЗ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЙрдирдХрд╛ рдирд╛рдо рдЖрдорддреМрд░ рдкрд░ рдХрдХреНрд╖рд╛ рдХреЗ рдирд╛рдо рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдзрд┐:
+ (NSString *)stringWithCString: (char const *)string encoding: (NSStringEncoding)encoding;
рдпрд╣ рдЖрдмрдВрдЯрд┐рдд рд╢реВрдиреНрдп рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рдПрдХ рддреИрдпрд╛рд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдмрд┐рдирд╛ рдЖрдмрдВрдЯрд┐рдд рдФрд░ init рдХреЙрд▓ рдХреЗ:
NSString *myString = [NSString stringWithCString: тАЬBla-bla-blaтАЭ encoding: NSASCIIStringEncoding];
рд╡рд╕реНрддреБ рдЬреАрд╡рди рднрд░
рдЬреИрд╕реЗ рд╣реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рдЕрдкрдиреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдЗрд░рд┐рдЯреНрд░реЗрдЯрд┐рд╡рд▓реА рдЦреЛ рдЬрд╛рддреА рд╣реИ (рдЬрдм рддрдХ рдХрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЖрдЦрд┐рд░реА рдкреЙрдЗрдВрдЯрд░ рдерд╛) рдФрд░ рдПрдХ рд▓реАрдХ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╡рд╛рдВрдЫрдиреАрдп рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдХреА рдЧрд┐рдирддреА рдХреЗ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХрд╛рдЙрдВрдЯрд░ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдЬрдм рдпрд╣ рдХрд╛рдЙрдВрдЯрд░ рд╢реВрдиреНрдп рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рддреА рд╣реИред рдЖрд╡рдВрдЯрд┐рдд рд╡рд░реНрдЧ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХрд╛рдЙрдВрдЯрд░ рдПрдХ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджреЗрд╢ рднреЗрдЬрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рд░рд┐рд▓реАрдЬред рдЗрди рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ NSObject рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗрдЧрд╛ред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ NSString рд╡рд░реНрдЧ рдХреА рд╕реНрдерд┐рд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдЙрдВрдЯрд░ рдореВрд▓реНрдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП @ "рдореИрдВ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реВрдВ") -1 рд╣реИ, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
id anObject = [SomeClass alloc]; // == 1 [anObject init]; // [anObject reatin]; // ( == 2) [anObject release]; // ( == 1 ) [anObject release]; // , 1
Init рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИред рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдЗрд╕рдореЗрдВ рднрд┐рдиреНрди рд╣реИрдВ рдХрд┐ рд╡реЗ рдПрдХ рдЖрдИрдбреА рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рдирд╛рдо рд╣рдореЗрд╢рд╛ рдЖрдИрдЖрдИрдЯреА рд╢рдмреНрдж рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╕рд┐рд░реНрдл рдЗрдирд┐рдЯ рд╣реЛрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреА рдпреЛрдЬрдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
- (id)init { self = [super init]; // // if (self) // // , nil { // } return self; // }
рдпрд╣рд╛рдВ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╢рд┐рд╖реНрдЯ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╣реАрдВ) рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рд╣реИ рдЬреЛ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рджреЛ рд╕рджрд╕реНрдпреЛрдВ рдФрд░ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдЗрдирд╡реЙрдпрд░рдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рд╣реИ:
- (id)initWithInt: (int)number { if (self = [super init]) { _myMember1 = [[SomeClass alloc] init]; // : , _myMember2 = [[SomeClass alloc] init]; _myIntMember = number; // // } return self; }
NSObject рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдФрд░ рд░рд┐рдЯреЗрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╕рдВрджрд░реНрдн рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдкреБрдирд░реНрдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ:
- (void)retain { [_internalLock lock]; // _referenceCounter++; // _referenceCounter тАУ [_internalLock unlock]; } - (void)release { [_internalLock lock]; _referenceCounter--; // if (!_referenceCounter) // { [_internalLock unlock]; [self dealloc]; // , ( ) } [_internalLock unlock]; }
рдЕрд░реНрдерд╛рддреН, рдбреАрд▓реЙрдХ рдореИрд╕реЗрдЬ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реНрд╡рдпрдВ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрджреНрдзрддрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЗрд╕рдХреЗ рдЖрд╡реЗрдЧреЛрдВ рдХреЗ рдХрд╛рдЙрдВрдЯрд░реНрд╕ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡рд╣ рдРрд╕рд╛ рд╣реА рдХрд░реЗред рдЬрд╛рд╣рд┐рд░ рд╣реИ, NSObject рдХреЗ рд▓рд┐рдП рдбреАрд▓реЙрдХ рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧреАред рдЖрдорддреМрд░ рдкрд░ рдХреБрдЫ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╕реМрджрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
- (void)dealloc { [_myMember1 release]; // [_myMember2 release]; // //[_myIntMember release]; , .. [super dealloc]; //c , }
рдкрд╣реБрдВрдЪ рдХреЗ рддрд░реАрдХреЗ
рдПрдХ рд╡рд┐рдзрд┐ рд╕реЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рдкрддрд╛ рд╡рд╛рдкрд╕ рдХрд░рддреЗ рд╕рдордп рдпрд╛ рдХрд┐рд╕реА рдФрдкрдЪрд╛рд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реБрдП рд╕рдВрджрд░реНрдн рдЧрд┐рдирддреА рдХреЗ рд╕рд╛рде рд╕рд╣реА рдХрд╛рдо рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдРрд╕реА рдЪреАрдЬреЗрдВ рддрдерд╛рдХрдерд┐рдд рдПрдХреНрд╕реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИрдВ, рдЬреЛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рддреА рд╣реИрдВ рдФрд░ рд╕реЗрдЯ рдХрд░рддреА рд╣реИрдВред рдпрд╣ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ, рдЬреЛ рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп, рдФрд░ рд╡рд┐рдзрд┐ рдХрд╛ рдирд╛рдо рдЬреЛ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╢рдмреНрдж рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ:
- (void)setRe: (double)re { _re = re; }
рдЪреВрдВрдХрд┐ _re рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдореЗрдВ рдХреЛрдИ рдХрдард┐рдирд╛рдИ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБ рд╣реИ, рддреЛ рд╕рд╛рдзрд╛рд░рдг рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрджрд░реНрдн рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддреАрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
//, [label setText: @тАЭHello worldтАЭ]; // text // label NSString * // setText UILabel ( тДЦ1) - (void)setText: (NSString *)text { [text retain]; // [_text release]; // _text _text = text; // } // setText UILabel ( тДЦ2) - (void)setText: (NSString *)text { if (_text != text) //c { [_text release]; // // _text _text = [text retain]; // // } } // setText UILabel ( тДЦ3 тАУ ) - (void)setText: (NSString *)text { if (_text != text) { [_text autorelease]; // e // _text _text = [text retain]; // // } }
рд╡рд┐рдХрд▓реНрдк # 3 рдмрд╣реБрдд рд╕рдлрд▓ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╡рд░реНрддрдорд╛рди рд╕реНрд╡-рд▓реЛрдбрд┐рдВрдЧ рдкреВрд▓ рдХреЛ рд░реЛрдХ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИ (рдЕрдЧрд▓рд╛ рдЕрдиреБрднрд╛рдЧ рджреЗрдЦреЗрдВ)ред
рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрд╛ рдорд╛рди рдкрдврд╝рдиреЗ рдХреА рдкрд╣реБрдВрдЪ рд╡рд┐рдзрд┐ рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрддреА рд╣реИ:
- (NSString *)text { return _text; }
рдкреНрд░реЛрдЧреНрд░рд╛рдо рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕реНрд╡-рд▓реЛрдбрд┐рдВрдЧ рдкреВрд▓
рдЖрдЗрдП рдЕрдм рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдмрдирд╛рдИ рдЧрдИ рд╡рд╕реНрддреБ рдХреЛ рд╡рд┐рдзрд┐ рд╕реЗ рд▓реМрдЯрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ:
-(NSString *)sayHelloToName: (NSString *)name withSurname: (NSString *)surname { NSString *retString = [[NSString alloc] initWithFormat: @тАЭ%@ %@!тАЭ, name, surname]; // return retString; }
рдкреНрд░рд╛рд░реВрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕реА рднрд╛рд╖рд╛ рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЗрд╕рдореЗрдВ рдЖрдИрдбреА рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рддреЛ% @ рдкреНрд░рд╛рд░реВрдк рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдкреНрд░рд╛рд░реВрдк рдкрд╛рд░реНрд╕рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреИрд╕реЗ рд╕рдордЭрддреА рд╣реИ рдХрд┐ рдЖрдИрдбреА рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ рд╡рд░реНрдг рд╕реНрдерд╛рдирд╛рдкрдиреНрди рд╣реИрдВ? рдпрд╣ рдХреЗрд╡рд▓ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬреЛ рджрд┐рдП рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╡рд┐рд╡рд░рдг рдХрд╛ рд╡рд┐рд╡рд░рдг рд╡рд┐рдзрд┐ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдзрд┐ рдореВрд▓ рд░реВрдк рд╕реЗ NSObject рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдШреЛрд╖рд┐рдд рдХреА рдЧрдИ рдереАред NSString рдиреЗ рдЗрд╕рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдХреЗ, рдХреЛрдИ рднреА рд╡рд╕реНрддреБ рдЗрд╕рдХреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЬрдЯрд┐рд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдПрдХ рд╡рд░реНрдЧ, рдЬреЛ рдбрдмрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рджреЛ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддрд╛ рд╣реИ:
- (NSString *)description { return [NSString stringWithFormat: @тАЭre: %lf im: %lfтАЭ, _re, _im]; // @тАЬre: 1.0 im: 2.5тАЭ _re == 1.0 _im == 2.5 }
SayHelloToName рдХреЗ рдмрд╛рдж: withSurname: рдкрджреНрдзрддрд┐ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдореЗрдореЛрд░реА рд░рд┐рд╕рд╛рд╡ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХреЙрд▓рд┐рдВрдЧ рдХреЛрдб рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд▓реМрдЯреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд░рд┐рд▓реАрдЬ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡рд╣ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рд╕реВрдЪрдХ рд╡рд╕реНрддреБ рдХреЗ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдореЗрдВ рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рд╡рд┐рдирд╛рд╢ рдЧрдВрднреАрд░ рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред рдореИрдВ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрддреНрдо-рдореБрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рддрд╛рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛрдб рдЙрдиреНрд╣реЗрдВ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рди рд╕реЛрдЪреЗрдВред рдпрд╣ рд╕рдорд╕реНрдпрд╛ NSAutoreleasePool рд╡рд░реНрдЧ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд▓ рдХреА рдЧрдИ рд╣реИ - рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдПрдХ рдЖрддреНрдо-рд▓реЛрдбрд┐рдВрдЧ рдкреВрд▓ред
рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕рдХреЗ рдмрд╛рдж рдмрдирд╛рдИ рдЧрдИ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдСрдЯреЛрд░реЗрд▓рд┐рдЬ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╡рд░реНрддрдорд╛рди (рдЕрдВрддрд┐рдо рдирд┐рд░реНрдорд┐рдд) рд╕реЗрд▓реНрдл-рдкреЗрдб рдкреВрд▓ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреВрд▓ рдХреЛ рдПрдХ рд░рд┐рд▓реАрдЬ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдкрдиреА рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛, рдЙрдирдХреА рд╕рдВрджрд░реНрдн рд╕рдВрдЦреНрдпрд╛ рдХрдо рдХрд░ рджреЗрдЧрд╛ (рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдирд╖реНрдЯ рдХрд░рдирд╛)ред рдЗрд╕ рддрд░рд╣ рд╕реЗред рд╕реЗрд▓реНрдл-рд▓реЛрдбрд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рд░рдЦреА рдЧрдИ рд╡рд╕реНрддреБ рдкреВрд▓ рдХреЗ рдЬреАрд╡рди рднрд░ рд╕реНрдореГрддрд┐ рдХреЛ рдЬреАрд╡рд┐рдд рдФрд░ рдШреЗрд░реЗ рд░рд╣рддреА рд╣реИред рдпрд╣ рдЫреЛрдЯреА рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕реНрдореГрддрд┐ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд╢рдВрд╕рд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрд╕реНрдерд╛рдпреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд▓реВрдк рдЬреЛ рд╕реНрд╡-рд▓реЛрдбрд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рднреЗрдЬреЗ рдЬрд╛рддреЗ рд╣реИрдВ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп (рдиреЗрд╕реНрдЯреЗрдб) тАЛтАЛрдкреВрд▓ рдХреЗ рд╕рд╛рде рдлрдВрд╕рд╛рдпрд╛ рдЬрд╛рдПред
рдХреЛрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХрд┐рд╕реА рднреА рдзрд╛рдЧреЗ рдХреЛ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ (рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ) NSAutoreleasePool рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рдирд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЕрдиреНрдп рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж)ред рдореБрдЦреНрдп () рдлрд╝рдВрдХреНрд╢рди, рдЬреЛ рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдореБрдЦреНрдп рдзрд╛рдЧрд╛ рд╣реИ, рдХреЛ рдХреЛрдХреЛ рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрд╢рд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:
int main(int argc, char *argv[]) // main() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // , int retVal; // [pool drain]; // , autorelease return retVal; }
рдФрд░ рд╕рд╣реА sayHelloToName: withSurname: рд╡рд┐рдзрд┐ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
-(NSString *)sayHelloToName: (NSString *)name withSurname: (NSString *)surname { NSString *retString = [[NSString alloc] initWithFormat: @тАЭ%@ %@!тАЭ, name, surname]; // [retString autorelease]; // , retString return retString; }
рд╡реИрд╕реЗ, рдПрдХ рд╕реЗрд▓реНрдл рдкрд╛рд╕реНрдб рдкреВрд▓ рдХреА рдбреНрд░реЗрди рд╡рд┐рдзрд┐ рдХреЗрд╡рд▓ рдЕрдВрддрд░ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЬреЛ рд╕реНрд╡рдпрдВ рдФрд░ рд╕рднреА рдирд┐рд╣рд┐рдд рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдЧреЗрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рднреА рджреЗрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреЗрд╡рд▓ рдореИрдХ рдУрдПрд╕ 10.4 рдФрд░ рдЙрдЪреНрдЪрддрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдИрдУрдПрд╕ рдкрд░ рдХреЛрдИ рдХрдЪрд░рд╛ рд╕рдВрдЧреНрд░рд╣ рдирд╣реАрдВ рд╣реИред
рдХрдХреНрд╖рд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛
рдЕрдм рдЬрдЯрд┐рд▓ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде Complex.m рдлрд╛рдЗрд▓ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
#import тАЬComplex.hтАЭ @implementation Complex - (id)init { return [self initWithRe: 0.0 andIm: 0.0]; } - (id)initWithRe: (double)re andIm: (double)im { if (self = [super init]) { _re = re; _im = im; _format = @тАЭre: %.1lf im: %.1lfтАЭ; // } } + (Complex *)complexWithRe: (double)re andIm: (double)im { return [[[Complex alloc] initWithRe: re andIm: im] autorelease]; } - (Complex *)add: (Complex *)other { return [[Complex alloc] initWithRe: _re + other->_re andIm: _im + other->_im]; } - (Complex *)sub: (Complex *)other { return [[Complex alloc] initWithRe: _re тАУ other->_re andIm: _im тАУ other->_im]; } - (NSString *)format { return _format; } - (void)setFormat: (NSString *)format {// - [format retain]; [_format release]; _format = format; } - (double)re { return _re; } - (void)setRe: (double)re { _re = re; } - (double)im { return _im; } - (void)setIm: (double)im { _im = im; } - (NSString *)description {// return [NSString stringWithFormat: _format, _re, _im]; } - (void)dealloc { [_format release]; // dealloc [super dealloc]; } @end
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд┐рд░реНрдорд╛рддрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢реЗрд╖ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред ComplexWithRe: andIm: рдкрджреНрдзрддрд┐ рд╡рд░реНрддрдорд╛рди рд╕реЗрд▓реНрдл-рд▓реЛрдбрд┐рдВрдЧ рдкреВрд▓ рдореЗрдВ рд╕реНрдерд┐рдд рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХреНрд▓рд╛рд╕ рдХреА рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓реМрдЯрд╛рддреА рд╣реИред рд╡рд┐рд╡рд░рдг рд╡рд┐рдзрд┐ рд╡рд╣реА рдХрд░рддреА рд╣реИ, рдЬреЛ рдПрдирдПрд╕рдПрд╕рдЯреНрд░рд┐рдВрдЧ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддреА рд╣реИред рдпрд╣рд╛рдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ рдЬрд╣рд╛рдВ рдкрд░рд┐рд╕рд░ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
#import тАЬComplex.hтАЭ #import <stdio.h> // printf() int main() { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; Complex *num1 = [[Complex alloc] init]; //0.0+0.0*i Complex *num2 = [[Complex alloc] initWithRe: 1.5 andIm: -2]; //1.5-2.0*i Complex *num3 = [Complex complexWithRe: 5 andIm: 7]; //5.0+7.0*i printf(тАЬ%s\nтАЭ, [[num2 description] cStringUsingEncoding: NSASCIIStringEncoding]); //> re: 1.5 im: -2.0 printf(тАЬ%s\nтАЭ, [[[num2 add: num3] description] cStringUsingEncoding: NSASCIIStringEncoding]); //> re: 6.5 im: 5.0 [num1 setRe: [num2 re]]; // _re num1 num2 [num1 setIm: [num3 im]]; // _im num1 num3 [num1 setFormat: @тАЭ%.2lf+%.2lf*iтАЭ]; // num1 printf(тАЬ%s\nтАЭ, [[num1 description] cStringUsingEncoding: NSASCIIStringEncoding]); //> 1.50+7.00*i [num1 release]; [num2 release]; //[num3 release]; , .. [pool drain]; return 0; }
рд╢реНрд░реЗрдгрд┐рдпрд╛рдБ рдФрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди
рдпрджрд┐ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рд╡рд░реНрдЧ (рдФрд░ рд╕рдВрднрд╡рддрдГ рд╕рдВрдХрд▓рд┐рдд) рдореЗрдВ рд╡рд┐рд░рд╛рд╕рдд рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдЖрдкрдХреЛ рдмрд╣реБрдд рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдмрд┐рдирд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВ:
// тАЬCategorizedComplex.hтАЭ #import тАЬComplex.hтАЭ @interfce Complex (CategorizedComplex) - (Complex *)mul: (Complex *)other; - (Complex *)div: (Complex *)other; @end // тАЬCategorizedComplex.mтАЭ #import тАЬCategorizedComplex.hтАЭ @implementation Complex (CategorizedComplex) - (Complex *)mul: (Complex *)other { return [Complex complexWithRe: _re * other->_re - _im * other->_im andIm: _re * other->_im + _im * other->_re]; } - (Complex *)div: (Complex *)other { double retRe, retIm, denominator; denominator = other->_re * other->_re + other->_im * other->_im; if (!denominator) return nil; retRe = (_re * other->_re + _im * other->_im) / denominator; retIm = (_im * other->_re - _re * other->_im) / denominator; return [Complex complexWithRe: retRe andIm: retIm]; } @end
рдФрд░ рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
CategorizdComplex *num1 = [[CategorizedComplex alloc] initWithRe: 1 andIm: 999]; Complex *num2 = [Complex complexWithRe: 0 andIm: 0]; CategorizedComplex *num3 = [num1 div: num2]; //num3 == nil
рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдирд╛рдорд╣реАрди рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ:
// тАЬCategorizedComplex.mтАЭ #import тАЬCategorizedComplex.hтАЭ @interface Complex () - (void)zeroComplex; // @end @implementation Complex - (void)zeroComplex // { _re = 0; _im = 0; } @end
рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреА рдПрдХ рдФрдкрдЪрд╛рд░рд┐рдХ рдШреЛрд╖рдгрд╛ рд╣реИ, рдЬреЛ рдпрджрд┐ рд╡рд╛рдВрдЫрд┐рдд рд╣реИ, рддреЛ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ (рд╕реА ++ рдореЗрдВ рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдирд╛рд▓реЙрдЧ, рдЬрд╣рд╛рдВ рд╕рднреА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЖрднрд╛рд╕реА ... = 0 рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 2.0 рдореЗрдВ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ (@required рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ, рдЗрд╕реЗ рдЪреБрдк рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ) рдФрд░ рдЪрдпрдирд╛рддреНрдордХ (@optional рд╡рд┐рдирд┐рд░реНрджреЗрд╢рдХ)ред рдпрджрд┐ рдХрд┐рд╕реА рднреА рд╡рд░реНрдЧ рдиреЗ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдФрд░ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЛ рдЗрд╕ рддрд░рд╣ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
@protocol MyPrinterProtocol @required - (void)print; - (BOOL)switchedOn; @optional - (void)loadPapaer: (int)numberOfPages; @end @interface MyPrinter : NSObject <MyPrinterProtocol> // MyPrinter MyPrinterProtocol { BOOL _state; int _numberOfPages; } - (id)initWithState: (BOOL)state andPagesCount: (int)pages; - (BOOL)state; @end
MyPrinter рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдФрд░ рд╕реНрд╡рд┐рдЪреНрдбрдСрди рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░, рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХреЗ рдмрд╛рджрд╕рдВрдЪрд╛рд▓рди:, рдПрдХ loadPaper: рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдореМрдЬреВрдж рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рд╡рд░реНрдЧ рд╡рд╕реНрддреБ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛ рдЬреЛ рдПрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
MyPrinter *printer; id anotherPrinter = [[MyPrinter alloc] init]; [anotherPrinter print]; //
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡рд░реНрдЧ рдХрдИ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд░реНрдЧ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдХреЛрдг рдХреЛрд╖реНрдардХ рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рджреНрд╡рд╛рд░рд╛ рдЙрдиреНрд╣реЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
@interface MyPrinter : NSObject <MyPrinterProtocol, OtherProtocol>
рдФрд░ рдХреБрдЫ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдЬреНрдЮрд╛рдд рд╡рд░реНрдЧ (рдЖрдИрдбреА) рдХреА рдПрдХ рд╡рд╕реНрддреБ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
id <MyPrinterProtocol> somePrinter;
рдЕрдкрд╡рд╛рдж
рддреНрд░реБрдЯрд┐ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рджреЛ рдореБрдЦреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ: рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд┐рддрд┐ рдЪрд░, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдкрд┐рдЫрд▓реЗ рдСрдкрд░реЗрд╢рди рдХреА рд╕рдлрд▓рддрд╛ рдФрд░ рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдкреАрдврд╝реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рджреЛрдиреЛрдВ рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╣реБрдИ, рд╡рд╣ рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕ рдХреЛрдб рдиреЗ рдЙрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдерд┐рддрд┐ рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рд╡рд┐рд╕реНрддреГрдд рд░реВрдк рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реБрдП, рдЗрд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдЗрди рджреЛрдиреЛрдВ рддрд░реАрдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
рдПрдХ рдЕрдкрд╡рд╛рдж рдХреБрдЫ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рд╡рд╕реНрддреБ рд╣реИред рд╡рд╣ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреЗ рдкреНрд░рдХрд╛рд░ рд╕реЗ) рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рд░рдЦрддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдХреЛрдХреЛ рдореЗрдВ рдПрдХ NSException рдХреНрд▓рд╛рд╕ рд╣реИ рдЬрд┐рд╕реЗ рджреЛ NSString рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдЖрд░рдВрднреАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрдХ рдордирдорд╛рдирд╛ рдХреНрд▓рд╛рд╕ (рдЖрдИрдбреА рдкреНрд░рдХрд╛рд░) рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ:
- (id)initWitnName: (NSString *)name reason: (NSString *)reason userInfo: (id)userInfo;
рдЖрдк рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, @throw рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдкреНрд░рдореЛрд╢рди рдореИрдХреЗрдирд┐рдЬреНрдо рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрдкрдиреНрди рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рдХрд╛ рд╡рд╣ рд╣рд┐рд╕реНрд╕рд╛ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреЛ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рд╢реАрд░реНрд╖рдХ рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рдРрд╕реЗ рдмреНрд▓реЙрдХ рдХреЛ рдиреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдФрд░ рдлрд┐рд░, рдЗрд╕ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рдж, рд╢реАрд░реНрд╖рдХ рдкрдХрдбрд╝рдиреЗ () рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рд░рдЦреЗрдВ , рдЬрд╣рд╛рдВ рдХреЛрд╖реНрдардХ рдореЗрдВ рдХрдерд┐рдд рдЕрдкрд╡рд╛рдж рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред рдмреНрд▓рд╛рдХреЛрдВ рдкрдХрдбрд╝ () рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рдж рдХреЛрд╢рд┐рд╢ рдХрдИ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдирд┐рдпрдВрддреНрд░рдг, рд╕реНрдЯреИрдХ рдХреЛ рд╕реНрдкрд┐рди рдХрд░рдирд╛, рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░, рдмрджрд▓реЗ рдореЗрдВ рд╕рднреА рдХреИрдЪ () рдмреНрд▓реЙрдХ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ , рдЙрд╕ рдХреИрдЪ рдмреНрд▓реЙрдХ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ(), рдШреБрдВрдШрд░рд╛рд▓реЗ рдХреЛрд╖реНрдардХреЛрдВ рдореЗрдВ рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдкрд╡рд╛рдж рдХрд╛ рдкреНрд░рдХрд╛рд░ рдирд┐рд╣рд┐рдд рд╣реИ (рд╕рдЯреАрдХ рдорд┐рд▓рд╛рди, рд╕реВрдЪрдХ рдХреЛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдпрд╛ рдЖрдИрдбреА)ред рдпрджрд┐ рдкреНрд░рдХрд╛рд░ рдЕрдкрд╡рд╛рдж рдХрд┐рд╕реА рднреА рдкрдХрдбрд╝ () рдмреНрд▓реЙрдХ рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ , рддреЛ рдирд┐рдпрдВрддреНрд░рдг рдЬрд╛рд░реА рд░рд╣рддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдХреЛрд╢рд┐рд╢ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рдж рдЕрдВрдд рдореЗрдВ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рдПрдХ рдмреНрд▓реЙрдХ рд╣реЛрддрд╛ рд╣реИ , рддреЛ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реБрдЖ (рдФрд░ рдХреБрдЫ рдХреИрдЪ () рдмреНрд▓реЙрдХ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ ), рдпрд╛ рдЗрд╕рдХреЗ рдЕрдВрддрд┐рдо рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдХрдк рдХреНрд▓рд╛рд╕ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж рд╣реЛрддрд╛ рд╣реИ:
Cup *cup = [[Cup alloc] init]; @try { [cup fill]; // fill NSException } @catch (NSException *exception) {// NSLog NSLog(@"main: Caught %@: %@", [exception name], [exception reason]); } @finally // @try { [cup release]; }
рдЕрдВрдд рдореЗрдВ рдмреНрд▓реЙрдХ рдореЗрдВ, рдпрд╣ рдХреЛрд╢рд┐рд╢ рдмреНрд▓реЙрдХ рдореЗрдВ рдЖрд╡рдВрдЯрд┐рдд рдореБрдХреНрдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ , рд▓реЗрдХрд┐рди рдЙрддреНрдкрдиреНрди рдЕрдкрд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рдореБрдХреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЧреБрдг
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА 2.0 рдХреЗ рд▓рд┐рдП, рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рд╡рд░реНрдЧ рдХрд╛ рд╣рдорд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░рд░реНрдердХ рд╣реИ: рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкрд╣реБрдВрдЪ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдПрдХ рдирд┐рд░рдВрддрд░ рджрд┐рдирдЪрд░реНрдпрд╛ рд╣реИред рд╣рдо рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
// тАЬComplex.hтАЭ #import <Foundation/Foundation.h> // NSObject NSString @interface Complex : NSObject { double _re; // double _im; // NSString *_format; // description } - (id)initWithRe: (double)re andIm: (double)im; + (Complex *)complexWithRe: (double)re andIm: (double)im; - (Complex *)add: (Complex *)other; // - (Complex *)sub: (Complex *)other; // @property (nonatomic, retain) NSString *format; // @property (nonatomic, assign) double re; // @property (nonatomic, assign) double im; @end // тАЬComplex.mтАЭ #import тАЬComplex.hтАЭ @implementation Complex @synthesize format = _format; // @synthesize re = _re; // @synthesize im = _im; // - (id)init { return [self initWithRe: 0.0 andIm: 0.0]; } - (id)initWithRe: (double)re andIm: (double)im { if (self = [super init]) { _re = re; _im = im; _format = @тАЭre: %.1lf im: %.1lfтАЭ; // } } + (Complex *)complexWithRe: (double)re andIm: (double)im { return [[[Complex alloc] initWithRe: re andIm: im] autorelease]; } - (Complex *)add: (Complex *)other { return [[Complex alloc] initWithRe: _re + other.re andIm: _im + other.im]; // re im } - (Complex *)sub: (Complex *)other { return [[Complex alloc] initWithRe: _re тАУ other.re andIm: _im тАУ other.im]; // re im } @end
рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдПрдХ рдРрд╕рд╛ рдирд╛рдо рд╣реИ рдЬреЛ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рддрдХ рдбреЙрдЯ рдСрдкрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╣реБрдБрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕реЗрд╕рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЗрдирд╡реЗрд░рд┐рдПрдВрдЯ рдХреЛ рд╕реЗрдЯ рдпрд╛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдВрдкрддреНрддрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдХрдИ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдкрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдПрдХреНрд╕реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред
- getter = getterName, setter = setterName рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд░реАрдб рдПрдХреНрд╕реЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдЧреЗрдЯрдЯрд░рдиреЗрдо рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рд╕реЗрдЯрд░рдиреЗрдо рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛
- рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдкрд╣реБрдБрдЪ рд╡рд┐рдзрд┐ рдЙрддреНрдкрдиреНрди рди рдХрд░реЗрдВ
- readwrite рджреЛрдиреЛрдВ рдПрдХреНрд╕реЗрд╕ рдХреЗ рддрд░реАрдХреЗ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ
- рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдкрд╣реБрдВрдЪ рд╡рд┐рдзрд┐ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИред
- рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдореВрд▓реНрдп рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдВ, рдЬрд╛рд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХрд╛ рдкрд┐рдЫрд▓рд╛ рдореВрд▓реНрдп рдФрд░ рд╕реНрд╡реАрдХреГрдд рдореВрд▓реНрдп рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рд╕реНрд╡реАрдХреГрдд рдореВрд▓реНрдп рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ (рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдХреЙрдкреА рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ)
- рдиреЙрдирдЯреЛрдорд┐рдХ, рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдПрдХреНрд╕реЗрд╕ рдореЗрдердб рдореЗрдВ рдХрдИ рдереНрд░реЗрдбреНрд╕ рдХреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдирд▓ рд▓реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
рд╕реМрднрд╛рдЧреНрдп рд╣реИ