рдХреИрдкреБрдЪрд┐рдиреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ рдЕрдиреВрдареА рддрдХрдиреАрдХ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдбреЗрд╕реНрдХрдЯреЙрдк рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдпрд╣ DOM рдХреЛ рдЕрдореВрд░реНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЛрдХреЛ рдЬреИрд╕рд╛ рдПрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕реАрдПрд╕рдПрд╕ рд▓реЗрдЖрдЙрдЯ рдФрд░ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореБрджреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдЧрдбрд╝рдмрдбрд╝ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕реНрдереИрддрд┐рдХ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмрдЬрд╛рдп, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдФрд░ рдЖрдИрдУрдПрд╕ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ред
рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд░реВрд╕реА рдореЗрдВ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рдЧрднрдЧ рдХреЛрдИ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдВрддрд░ рдХреЛ рднрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рдирд┐рдмрдВрдз рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рддреБрд░рдВрдд рдЕрдкрдирд╛ рдкрд╣рд▓рд╛ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдореИрдВ рдЕрдкрдиреЗ
рдЕрдХреНрд╖рдп рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирд▓рд╛рдЗрди рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛, рддреЛ рдореИрдВ рд░реВрдкрд░реЗрдЦрд╛ рд╕реЗ рдорд┐рд▓рд╛ред рдореБрдЭреЗ рдПрдХ рдкреВрд░реА рддрд░рд╣ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЖрдИрдбреАрдИ рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдереА рдЬреЛ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХрд╛рдо рдХрд░рддреА рдереА, рдФрд░ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдиреЗ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХрд╛рдо рдХрд┐рдпрд╛ред
рдХрд╣рд╛рдиреА
2008 рдореЗрдВ, рдлреНрд░рд╛рдВрд╕рд┐рд╕реНрдХреЛ рдЯреЙрд▓реНрдорд╛рд╕реНрдХреА, рдЯреЙрдо рд░реЙрдмрд┐рдиреНрд╕рди рдФрд░ рд░реЙрд╕ рдмрд╛рдЙрдЪрд░ (рдлреНрд░рд╛рдВрд╕рд┐рд╕реНрдХреЛ рдФрд░ рд░реЙрд╕ рдкреВрд░реНрд╡ рдПрдкреНрдкрд▓ рдХрд░реНрдордЪрд╛рд░реА рд╣реИрдВ) рдиреЗ
280 рдЙрддреНрддрд░ рдмрдирд╛рдП рдФрд░
280 рд╕реНрд▓рд╛рдЗрдб , рдПрдХ рдкреНрд░рд╕реНрддреБрддрд┐ рдкреНрд░рд╕реНрддреБрддрд┐ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ред рдпрд╣ рдЕрднреА рднреА рдЕрдкрдиреЗ рд▓реБрдХ рдФрд░ рдлреАрд▓ рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рддрдм рдпрд╣ рдХреБрдЫ рдЕрд╕рддреНрдп рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 280 рд╕реНрд▓рд╛рдЗрдбреНрд╕ рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдЙрддреНрдкрд╛рдж рдирд╣реАрдВ рдерд╛, рдпрд╣ рд╕рд┐рд░реНрдл рдирдП рд╡реЗрдм рдврд╛рдВрдЪреЗ, рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдерд╛ред
рдЙрд╕реА рд╡рд░реНрд╖ 4 рд╕рд┐рддрдВрдмрд░ рдХреЛ, рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЛ рдПрд▓рдЬреАрдкреАрдПрд▓ рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рддреБрд░рдВрдд рдЧрд┐рдЯрд╣рдм рдкрд░ рд╣рд┐рдЯ рдмрди рдЧрдпрд╛ред рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реЛрдВ рдХреЗ рдПрдХ рд╕рдореБрджрд╛рдп рдиреЗ рдЧрдарди рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рддрдм рд╕реЗ, рдпрд╣ рд╕рдореБрджрд╛рдп рдХреЗрд╡рд▓ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдЖ рд╣реИ рдФрд░ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╣реБрдЖ рд╣реИред
2009 рдореЗрдВ, 280 рдЙрддреНрддрд░ рдиреЗ рдПрдХ рдирдП рдЙрддреНрдкрд╛рдж
рдПрдЯрд▓рд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХреА, рдФрд░ рдпрд╣ рднреА рдПрдХ рд╕рдлрд▓рддрд╛ рддрдХрдиреАрдХ рд╕рд╛рдмрд┐рдд рд╣реБрдИред рдПрдЯрд▓рд╕ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд┐рд▓реНрдбрд░ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИ, рдЗрд╕рдореЗрдВ рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реБрдП, рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ-рджреЛ рдорд┐рдирдЯ рдХрд╛ рдХрд╛рдо рд╕реАрдПрд╕рдПрд╕ рдХреЗ рд╕рд╛рде рдкреАрдбрд╝рд╛ рдХреЗ рджрд┐рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдЯрд▓рд╕ рдПрдХ рдмрдВрдж рднреБрдЧрддрд╛рди рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ, рдЖрдкрдХреЛ рдмреАрдЯрд╛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП $ 20 рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ рдирд┐рдмрдВрдз рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдПрдЯрд▓рд╕ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рддреЗ рд╕рдордп рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдкреНрд░рдпреЛрдЬреНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдкрд░ рдирд╣реАрдВред
рдЕрдлрд╡рд╛рд╣реЛрдВ рдХреЗ рдореБрддрд╛рдмрд┐рдХ, 2010 рдХреА рдЧрд░реНрдорд┐рдпреЛрдВ рдореЗрдВ, рдХреИрдкрдЯреБрдЪреАрдиреЛ рдФрд░ рдПрдЯрд▓рд╕ рддрдм рддреЗрдЬреА рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реБрдП, рдЬрдм рдореЛрдЯреЛрд░реЛрд▓рд╛ рдиреЗ рдЕрдкрдиреА рд╕рднреА рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде 280 рдЙрддреНрддрд░ рдЦрд░реАрджреЗ, $ 20 рдорд┐рд▓рд┐рдпрди рдЦрд░реНрдЪ рдХрд┐рдПред рдЦрд░реАрдж рдХрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЙрджреНрджреЗрд╢реНрдп рдПрдВрдбреНрд░реЙрдЗрдб рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рд╡рд┐рдХрд╛рд╕ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╣реИред рдХрдИ рджреБрд╖реНрдЯ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреА рдореГрддреНрдпреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╢реБрд░реВ рд╣реЛ рдЧрдпрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдзрд╛ рд╕рд╛рд▓ рдмреАрдд рдЪреБрдХрд╛ рд╣реИ, рдлрд┐рд░ рднреА рд░реВрдкрд░реЗрдЦрд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛ рд░рд╣реА рд╣реИ, рдФрд░ 23 рдлрд░рд╡рд░реА рдХреЛ рд╕рдВрд╕реНрдХрд░рдг 0.9 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕рд▓рд┐рдП, рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдиреНрдирдд рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдЗрд╕рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдПрдХ рдмрдбрд╝реЗ рдирд┐рдЧрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╣рд░ рд╡реЗрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдХрд░рд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рд╕рд┐рджреНрдзрд╛рдВрдд
Cappuccino рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрдирд╛рдИ рдЧрдИ Objective-J рднрд╛рд╖рд╛ рд╣реИред рдпрд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдРрдб-рдСрди рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ-рд╕реА, рд╕реА рдХреЗ рд▓рд┐рдП рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП, рдХрдИ рдХреЗ рд▓рд┐рдП, рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдРрдб-рдЗрди рдПрдХ рднрд╛рд╖рд╛ рдкрд░ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдмрд╣реБрдд рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЙрджреНрджреЗрд╢реНрдп-рдЬреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЛрдХреЛ рдПрдкреАрдЖрдИ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджреЛрд╣рд░рд╛рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рд╖рдп рдкрд░ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд░рдЪрдирд╛рддреНрдордХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдПрдХ рдХрд▓реНрдкрдирд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реИ, рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рдареАрдХ рдиреАрдЪреЗ рд╣реИред рдЗрд╕рдХреЗ рдХрд╛рд░рдг, рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдФрд░ рдЖрдИрдУрдПрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЖрд╕рд╛рдиреА рд╕реЗ рд╡реЗрдм рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рдПрдкреАрдЖрдИ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдбреЗрд╕реНрдХрдЯреЙрдк рдкрд░ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рдЙрдкрдпреЛрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдХрд┐ NeXTSTEP OS рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЬрдм рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ
рдХреЛрдХреЛ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ
рдбреЙрдХреНрд╕рд┐рдЬрд╝рди рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдореЗрдВ
рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред
рджреВрд╕рд░реЗ, рд▓рдЪреАрд▓реЗрдкрди рдХреА рдХрдореА рдХрднреА-рдХрднреА рдПрдХ рдкреНрд▓рд╕ рд╣реЛрддреА рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрд╕ рдмрд╛рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдореИрдВрдиреЗ рдЕрдм рдПрдХ рдорд╣рд╛рди рд╡рд┐рдзрд░реНрдо рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддреБрд░рдВрдд рдмрд╣рд╛рдирд╛ рдмрдирд╛рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдбрд┐рдЬрд╛рдЗрдирд░ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдиреЗрдЯ рдФрд░ рдЕрдиреНрдп рдХреГрддреНрд░рд┐рдо рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдирд╛рдбрд╝реА рдФрд░ рдПрдВрдЯреАрдбрд┐рд▓реНрдпреВрдпрд┐рдпрди рд▓рдЧрддреЗ рд╣реИрдВред
рдЯрд╛рд░рдЧреЗрдЯ-рдПрдХреНрд╢рди рдкреНрд░рддрд┐рдорд╛рди рдХреЗ рдмрдЬрд╛рдп,
__defineGetter__
рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЕрдХреНрд╕рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╕реНрдкрд╖реНрдЯ
__defineGetter__
рдФрд░
__defineSetter__
рдХреЗ рдмрдЬрд╛рдп,
__defineGetter__
рдФрд░
__defineSetter__
, рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХреЗ рдмрдЬрд╛рдп, рдкрд░рд┐рдЪрд┐рдд рдмрд┐рдВрджреБ, рд╕рдм рдХреЗ рдмрд╛рджред рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╣рд┐рд╕реНрд╕рд╛: рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рддрд░реАрдХреЗ
рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреА рд╡рд╕реНрддреБ рдирд╣реАрдВ
рд╣реИрдВ !
рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЧреБрдгреЛрдВ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ, рдФрд░ рд╡реЗ рдХрдорд┐рдпреЛрдВ рдХреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд░рд┐рдгрд╛рдо рд╣реИрдВред рдПрдХ рдЕрдзрд┐рдХ рдХрдареЛрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рдЖрдкрдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдбрд╝рдмрдбрд╝реА рдореЗрдВ рдбреВрдмрдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреЛрдб рдХреЛ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓рдВрдмреЗ, рд╕рд╛рд░реНрдердХ рдирд╛рдо рдЖрдкрдХреЛ рдХреЛрдХреЛ рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдХрдИ рджрд░реНрдЬрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдЖрдкрдХреЛ рдХреА-рд╡реИрд▓реНрдпреВ рдХреЛрдбрд┐рдВрдЧ, рдХреА-рд╡реИрд▓реНрдпреВ рдСрдмреНрдЬрд░реНрд╡рд┐рдВрдЧ рдФрд░ рдХреА-рд╡реИрд▓реНрдпреВ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЬреЛ рдЬрдЯрд┐рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рдХреНрд░рд╛рдВрддрд┐ рд▓рд╛рддреЗ рд╣реИрдВ (рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрд╕ рдирд┐рдмрдВрдз рдореЗрдВ рдЙрдирдХреЗ рд╡рд░реНрдгрди рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд╛рди рдирд╣реАрдВ рд╣реИ)ред
рдореИрдВрдиреЗ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓реБрдХ рд╕реЗ рдЖрдХрд░реНрд╖рд┐рдд рдерд╛ред рдЕрдм рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрд╕рд▓реА рддрд╛рдХрдд рдЗрд╕рдХреЗ рдПрдкреАрдЖрдИ рдореЗрдВ рд╣реИ, рдЬреЛ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдореБрдЭреЗ рднрдпрд╛рдирдХ рд▓рдЧ рд░рд╣рд╛ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЖрдкрд╕реЗ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд░реВрдкрд░реЗрдЦрд╛ рдХреЗ рджрд░реНрд╢рди рд╕реЗ рдЕрд╡рдЧрдд рд╣реЛ рдЬрд╛рдПрдВред
рдЖрдЗрдП рдЙрджреНрджреЗрд╢реНрдп-рдЬреЗ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВред рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд╣ рдЬреЛ рдореБрдЦреНрдп рдЪреАрдЬ рд▓рд╛рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдХрдХреНрд╖рд╛рдПрдВред рдЙрдиреНрд╣реЗрдВ
@implementation
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
@ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡реНрдпрдХреНрддрд┐: CPObject
{
CPString рдирд╛рдо @accessors;
}
(рдЖрдИрдбреА) initWithName: (CPString) рдирд╛рдо
{
рдЕрдЧрд░ (рд╕реНрд╡ = [рд╕реБрдкрд░ init])
рдирд╛рдо = рдирд╛рдо;
рд╕реНрд╡ рд▓реМрдЯ рдЖрдУ;
}
(рд╡реНрдпрдХреНрддрд┐) personWithName: (CPString) рдирд╛рдо
{
рд╡рд╛рдкрд╕реА [[рд╡реНрдпрдХреНрддрд┐ рдЖрд╡рдВрдЯрд┐рдд] initWithName: aName];
}
@end
@implementation
рдФрд░
@end
рдмреАрдЪ рдПрдХ рд╡рд░реНрдЧ рд╡рд░реНрдгрди рд╣реИред Cappuccino рд╡рд░реНрдЧ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╢реАрд░реНрд╖
CPObject
рд╕реЗ
Person
рд╡рд░реНрдЧ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рдлрд┐рд░, рд╡рд░реНрдЧ рд╕рджрд╕реНрдп рдЪрд░ рдмреНрд░реЗрд╕рд┐рдЬрд╝ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
name
- рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рджрд╕реНрдп рдЪрд░ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП
@accessors
рдФрд░ рд╕реЗрдЯрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреЗ рд╣реИрдВ (
@accessors
рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)ред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдореЗрдВ
setName:
рдХреЗ рдирд╛рдордХрд░рдг рдХрд╛ рдирд┐рдпрдо рдХреБрдЫ рдЧреИрд░-рдорд╛рдирдХ рд╣реИ - рдпрд╣
name
рдФрд░
setName:
рдЗрд╕ рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдХреИрдкреБрдЪрд┐рдиреЛ рдЖрдВрддрд░рд┐рдХ рддрдВрддреНрд░ рдЗрд╕ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░реЗрдХреНрд╢рди
рдореИрд╕реЗрдЬ рдлреЙрд░рд╡рд░реНрдбрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдпрд╣ рддрдХрдиреАрдХ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдореЙрд▓рдЯрд╛рдХ рднрд╛рд╖рд╛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рдереАред рд╕рд┐рдВрдереЗрдЯрд┐рдХ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
[рд╡рд╕реНрддреБ рд╕рдВрджреЗрд╢]
[рд╕рдВрджреЗрд╢ рдСрдмреНрдЬреЗрдХреНрдЯрдкреИрд░рдореАрдЯрд░: рдорд╛рди]
[рдкреИрд░рд╛рдореАрдЯрд░ 1 рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рд╡рд╕реНрддреБ: value1 рдкреИрд░рд╛рдореАрдЯрд░ 2: value2]
...
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЙрд▓рд┐рдВрдЧ рдЧреЗрдЯрд░реНрд╕ рдФрд░ рдПрдХ
Person
рдХреА рд╢реНрд░реЗрдгреА рдХреЗ
Person
рдХрд╛ рдмрд╕рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
var рдирд╛рдо = [aPerson name];
[aPerson рд╕реЗрдЯрдирд╛рдо: "рд╡рд╛рд╕реНрдпрд╛"];
рд╕рджрд╕реНрдп рдЪрд░ рдХреЗ рдмрд╛рдж рдШреЛрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ,
@end
рдХреАрд╡рд░реНрдб рд╕реЗ рдкрд╣рд▓реЗред рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐рдпрд╛рдВ рдПрдХ рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВ, рдХрдХреНрд╖рд╛ рдХреА рдЖрд╡реГрддреНрддрд┐ рд╡рд┐рдзрд┐рдпрд╛рдВ рдорд╛рдЗрдирд╕ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рджреЛ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ: рдкрд╣рд▓рд╛, рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛
alloc
рд╡рд┐рдзрд┐ рдПрдХ рдЕрд╕рдВрдЧрдард┐рдд рд╡рд╕реНрддреБ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ (рдЗрдирд┐рдЯ рд╡рд┐рдзрд┐) рдЗрд╕реЗ рдЖрд░рдВрдн рдХрд░рддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВ,
personWithName:
рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред
Objective-J рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдХреЗ рдирд╛рдо рдЖрдорддреМрд░ рдкрд░
init
рд╢рдмреНрдж рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╣рд▓реЗ рд╕реБрдкрд░рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рдлрд┐рд░ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдФрд░
self
рд╡рд╛рдкрд╕ рдХрд░реЗрдВред рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рддреНрд░реБрдЯрд┐ рдХреЛ
nil
рдорд╛рди рджреЗрдХрд░ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╣рд╛рдБ, рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рдордп, рдЕрдкрд╡рд╛рдж рдЕрднреА рддрдХ рдлреИрд╢рди рдореЗрдВ рдирд╣реАрдВ рдереЗ, рдЗрд╕рд▓рд┐рдП рдХреЛрдХреЛ рдФрд░, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЙрдирдХреЗ рд╕рд╛рде рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдбрд┐рд╕реНрдкреЗрдВрд╕)ред
рд╢реИрд▓реА рдПрдХрддрд╛ рдХреЗ рд▓рд┐рдП, Objective-J, Objective-C рд╕реЗ рд▓рд┐рдП рдЧрдП рддреАрди рдЪрд░реЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдпреЗ
nil
,
YES
рдФрд░
NO
ред рд╡реЗ рдХреНрд░рдорд╢рдГ
null
,
true
рдФрд░
false
рд╕рдорд╛рди рд╣реИрдВред
рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЛрдбрд┐рдВрдЧ рд╕реНрдЯрд╛рдЗрд▓ рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕ рдирд┐рдмрдВрдз рдХреЗ рдХрдИ рдкрд╛рдардХреЛрдВ рдХреА рддрд░рд╣, рдореИрдВрдиреЗ рдХрднреА рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рдерд╛ рдХрд┐ рдХреНрд▓рд╛рд╕ рдХреЛ
@implementation
рджреНрд╡рд╛рд░рд╛ рдХреНрдпреЛрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
@class
ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╣реА рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рдХреЗ рд▓рд┐рдП: рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА, рдРрдб-рдСрди рд╕реА рдХреЗ рд░реВрдк рдореЗрдВ, рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ (* рд╣реЗрдбреНрд╕ рд╕реЗ .h) рдФрд░ рдбреЗрдлрд┐рдирд┐рд╢рди рдлрд╛рдЗрд▓реНрд╕ (* .m рд╕реЗ рдореИрд╕реЗрдЬ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреНрд▓рд╛рд╕реЗрд╕ (
@interface
) рдФрд░ рдбрд┐рдлрд╛рдЗрди (
@implementation
@interface
) рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред ред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдХреЛ рдШреЛрд╖рдгрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЗрд╡рд▓
@implementation
ред
рдЕрднреНрдпрд╛рд╕
рдпрд╣ рдХреИрдкреБрдЪреАрдиреЛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдпрджрд┐ рдЖрдк Windows рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ
Cygwin (рдПрдХ рдЕрдкреНрд░рд┐рдп рдкрд░рд┐рд╕реНрдерд┐рддрд┐) рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдмрд╛рдХреА рд╕рднреА рдФрд░ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рднреА рдкрд┐рдЫрд▓реЗ рдХрджрдо рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ, рдмрд╕
рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рд╕реНрдЯрд╛рд░реНрдЯрд░ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдмреВрдЯрд╕реНрдЯреНрд░реИрдк.рд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдВред
рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреИрдк рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди (рдЖрд╢реНрдЪрд░реНрдп!) рдмрдирд╛ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред рд╣рдо рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддреЗ рд╣реИрдВ:
рдХреИрдк рдЬреАрди "рдЯреНрд╡рд┐рдЯрд░ рдЦреЛрдЬ"
рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реЗ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рд╣рдо рд╕реВрдЪрдХрд╛рдВрдХ-рдбреАрдмрдЧ.html рдФрд░ AppController .j (* .j рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рдорд╛рдирдХ рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ) рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред
Index-debug.html рдЦреЛрд▓реЗрдВред Google Chrome рдХреА рд╕рдЦреНрдд рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ Cappuccino рдХреЛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдЖрд╡рд╢реНрдпрдХ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ: // рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдЙрдард╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЕрдиреНрдп рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╣рдо рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб рдПрдкреНрд▓реАрдХреЗрд╢рди рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ! рдХреИрдкреБрдЪрд┐рдиреЛ, рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдХреЛрдб рдХреЛ рдмреНрд░рд╛рдЙрдЬ рдкрд░, рд╕рд╣реА рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЖрдк рд╕рд┐рд░реНрдл рдкреЗрдЬ рдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдбрд╛рдЙрдирд▓реЛрдб рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ "рдХреЙрдореНрдмреИрдЯ" рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╣рдо рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред AppController рдХреНрд▓рд╛рд╕ рдХреЛ AppController.j рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рдЬреЗ рдореЗрдВ рдпрд╣ рд╕рдорд╛рди рдирд╛рдо рдХреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рдХреЛрдб рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИред рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░
AppController
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдХрдХреНрд╖рд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХреЗ рджреЛ рдореБрдЦреНрдп рднрд╛рдЧреЛрдВ
Foundation
рдФрд░
AppKit
рдЖрдпрд╛рдд рдХрд░рддреЗ рд╣реИрдВред
Foundation
рдореЗрдВ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░
AppKit
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИред
@import <Foundation / Foundation.j>
@import <AppKit / AppKit.j>
@import
рдХреАрд╡рд░реНрдб
@import
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕реА рдореЗрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЛрдг рдХреЛрд╖реНрдардХ рдореЗрдВ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╕рдордп, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореМрдЬреВрджрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рд┐рд╕реНрдЯрдо рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЦреЛрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред
applicationDidFinishLaunching:
рд╡рд┐рдзрд┐
applicationDidFinishLaunching:
рдЖрд╡реЗрджрди рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рд░реНрдердХ рдирд╛рдо рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рд░реВрдкрд░реЗрдЦрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХреЗрд╡рд▓ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреВрдВрдЧрд╛ред рдХреИрдкреБрдЪрд┐рдиреЛ рдЖрдкрдХреЛ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рд╕реЗ рдмрдЪрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрдо рд╕реЗ рдХрдо рдЙрдиреНрд╣реЗрдВ рдореБрдЭреЗ рдмрдЪрд╛рдПрдВред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╡рд┐рдВрдбреЛ рдФрд░ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдПрдВрдЧреЗ:
var рд╡рд┐рдВрдбреЛ = [[CPWindow рдЖрдмрдВрдЯрд┐рдд] initWithContentRect: CGRectMake (100, 100, 250, 70)
рд╕реНрдЯрд╛рдЗрд▓рдорд╛рд╕реНрдХ: CPTitledWindowMask],
contentView = [рд╡рд┐рдВрдбреЛ contentView],
textField = [[CPTextField рдЖрд╡рдВрдЯрд┐рдд] initWithFrame: CGRectMake (25, 20, 200, 30)];
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рди
CGRectMake(x, y, width, height)
рдЙрд╕ рдЖрдпрдд рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд┐рдд рд╣реЛрдЧрд╛ред рд╕рд╛рдордЧреНрд░реА
contentView
рд╡рд┐рдзрд┐ рд╡рд┐рдВрдбреЛ рдХреЗ рдЖрдВрддрд░рд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдПрдХ рджреГрд╢реНрдп рд▓реМрдЯрд╛рддреА рд╣реИред
рдореИрдВ 80 рд╡рд░реНрдгреЛрдВ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рд╕реАрдорд╛ рдХрд╛ рдПрдХ рдкреНрд░рдмрд▓ рд╕рдорд░реНрдердХ рд╣реБрдЖ рдХрд░рддрд╛ рдерд╛ред рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдореЗрдВ рдЗрд╕ рдирд┐рдпрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдб рдПрдХ рдЕрдкрдардиреАрдп рдЧрдбрд╝рдмрдбрд╝реА рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ-рдЬреЗ рдФрд░ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рджреЛрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЦреБрдж рдХреЛ рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж Google
рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВ , рд▓реЗрдХрд┐рди рд╡рд╣ рдФрд░ Googleред
рдЕрдм рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдлрд╝реНрд░реЗрдо рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
[textField setEditable: YES];
[textField setBezeled: YES];
рд▓рдХреНрд╖реНрдп рдФрд░ рдХреНрд░рд┐рдпрд╛ рд╕реЗрдЯ рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдФрд░ рд╡рд┐рдзрд┐ рдЬрд┐рд╕реЗ рдпрд╣ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдм рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдВрдЯрд░ рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
[textField setTarget: рдЖрддреНрдо];
[textField setAction: @selector (didSubmitTextField :)];
рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдкрд╛рд░рд┐рдд рдорд╛рди рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
@selector
рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕реЗ рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВ:
[contentView addSubview: textField];
[рд╡рд┐рдВрдбреЛ рдореЗрдХрдлреНрд░рд╕реНрдЯрд░реЗрдиреНрдбрд░: рдЯреЗрдХреНрд╕реНрдЯрдлрд┐рд▓реНрдб];
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ:
[рдЦрд┐рдбрд╝рдХреА рдХреЗрдВрджреНрд░];
[рд╡рд┐рдВрдбреЛ рд╕реЗрдЯрд┐рдЯреЗрд▓: "рдЯреНрд╡рд┐рдЯрд░ рд╕рд░реНрдЪ"];
[рдЦрд┐рдбрд╝рдХреА рдЖрджреЗрд╢: рд╕реНрд╡рдпрдВ];
рдЖрд╡реЗрджрди рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрдм рд╣рдо Enter рджрдмрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддред
didSubmitTextField:
рд╡рд┐рдзрд┐
didSubmitTextField:
- (рд╢реВрдиреНрдп) didSubmitTextField: (CPTextField) textField
{
var searchString = [textField stringValue];
рдпрджрд┐ (рдЦреЛрдЬ!)
рд╡рд╛рдкрд╕реА;
[[[SearchWindowController рдЖрд╡рдВрдЯрд┐рдд] initWithSearchString: searchString] showWindow :ilil];
[textField setStringValue: ""];
[[textField window] makeKeyAndOrderFront: nil];
}
рд╣рдо рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдпрд╣ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рддреЛ
SearchWindowController
рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдПрдВ, рдЗрд╕рдХреА рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдПрдВ, рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдЦрд╛рд▓реА рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреА рд╡рд┐рдВрдбреЛ рдХреЛ рдЖрдЧреЗ рдмрдврд╝рд╛рдПрдВред рдЫреЛрдЯреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐
SearchWindowController
рдХреНрд▓рд╛рд╕ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╣реИред
рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ SearchWindowController.j рдФрд░
CPWindowController
рд╕реЗ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ
CPWindowController
:
@ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди SearchWindowController: CPWindowController
{
}
@end
рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рдПрдХ рдЦрд┐рдбрд╝рдХреА рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЯреНрд╡рд┐рдЯрд░ рдкрд░ рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ:
- (рдЖрдИрдбреА) initWithSearchString: (CPString) searchString
{
рдЕрдЧрд░ (рд╕реНрд╡ = [рд╕реБрдкрд░ init]) {
var рд╡рд┐рдВрдбреЛ = [[CPWindow рдЖрдмрдВрдЯрд┐рдд] initWithContentRect: CGRectMake (10, 30, 300, 400)
styleMask: CPTitledWindowMask | CPClosableWindowMask | CPResizableWindowMask];
[рдЦрд┐рдбрд╝рдХреА setTitle: searchString];
[рд╕реНрд╡ рд╕реЗрдЯрд╡рд┐рдиреНрдбреЛ: рд╡рд┐рдВрдбреЛ];
var request = [CPURLRequest requestWithURL: "http://search.twitter.com/search.json?q=" + encodeURIComponent (searchString)];
[CPJSONPConnection sendRequest: рдЕрдиреБрд░реЛрдз рдХреЙрд▓рдмреИрдХ: "рдХреЙрд▓рдмреИрдХ" рдкреНрд░рддрд┐рдирд┐рдзрд┐: рд╕реНрд╡рдпрдВ];
}
рд╕реНрд╡ рд▓реМрдЯ рдЖрдУ;
}
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЯреНрд╡рд┐рдЯрд░ рд╕реЗ рдПрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦреЗрдВ:
- (рд╢реВрдиреНрдп) рдХрдиреЗрдХреНрд╢рди: (CPJSONPConnection) рдХрдиреЗрдХреНрд╢рди didReceiveData: (рдСрдмреНрдЬреЗрдХреНрдЯ) рдбреЗрдЯрд╛
{
var contentView = [[рд╕реНрд╡ рд╡рд┐рдВрдбреЛ] contentView];
рдЕрдЧрд░ (data.results.length) {
var рд╕реАрдорд╛ = [contentView рд╕реАрдорд╛],
collectionView = [[CPCollectionView рдЖрд╡рдВрдЯрди] initWithFrame: рд╕реАрдорд╛];
[collectionView setAutoresizingMask: CPViewWidthSizable];
[рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп setMaxNumberOfColumns: 1];
[collectionView setMinItemSize: CGSizeMake (200, 100)];
[collectionView setMaxItemSize: CGSizeMake (10000, 100)];
var рдЖрдЗрдЯрдордкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк = [[CPCollectionViewItem рдЖрдмрдВрдЯрд┐рдд] init];
[itemPrototype setView: [TweetView new]];
[collectionView setItemPrototype: itemPrototype];
[рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп рд╕реЗрдЯ рдХрд░реЗрдВ: data.results];
var рд╕реНрдХреНрд░реЙрд▓ рджреГрд╢реНрдп = [[CPScrollView рдЖрд╡рдВрдЯрди] initWithFrame: рд╕реАрдорд╛];
[рд╕реНрдХреНрд░реЙрд▓рд╡реНрдпреВ рд╕реЗрдЯрдСрдЙрдЯрд░реНрд╕рд╛рдЗрдЬрд┐рдВрдЧ рдореЗрд╕реНрдХ: CPViewWidthSizable | CPViewHeightSizable]
[рд╕реНрдХреНрд░реЙрд▓ рджреГрд╢реНрдп рд╕реЗрдЯрдбрд╛рдпрдореЗрдВрдореЗрдВрдЯ рд╡реНрдпреВ: рд╕рдВрдЧреНрд░рд╣ рджреГрд╢реНрдп];
[contentView addSubview: рд╕реНрдХреНрд░реЙрд▓ рджреГрд╢реНрдп];
} {
var рд▓реЗрдмрд▓ = [CPTextField labelWithTitle: "рдиреЛ рдЯреНрд╡реАрдЯ"],
boundsSize = [contentView boundsSize];
[рд▓реЗрдмрд▓ рд╕реЗрдЯрд╕реЗрдВрдЯрд░: CGPointMake (boundsSize.width / 2, boundsSize.height / 2)];
[рд▓реЗрдмрд▓ setAutoresizingMask: CPViewMinXMargin | CPViewMaxXMargin | CPViewMinYMargin | CPViewMaxYMargin];
[contentView addSubview: рд▓реЗрдмрд▓];
}
}
рдЯреНрд╡реАрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреНрд▓рд╛рд╕реЗрд╕
CPCollectionView
,
CPCollectionViewItem
рдФрд░
CPScrollView
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди
TweetView
рд╡рд░реНрдЧ
TweetView
рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЖрдкрдиреЗ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ
setAutoresizingMask:
рдкрджреНрдзрддрд┐ рдкрд░ рдХрдИ рдХреЙрд▓реЛрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рд╕реАрдПрд╕рдПрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд╢рд╛рдк рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░ рджреЗрдЧреА, рдЬрдм рддрдХ рдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдРрд╕рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реЛред рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдЗрддрдиреА рд╕рд░рд▓ рдФрд░ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдПрдХ рдмрдЪреНрдЪрд╛ рднреА рдЗрд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣
TweetView
рд╡рд░реНрдЧ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ:
@ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд▓рд░рд╡: CPView
{
CPImageView imageView;
CPTextField userLabel;
CPTextField tweetLabel;
}
- (рд╢реВрдиреНрдп) setRepresentedObject: (рдЖрдИрдбреА) рдЯреНрд╡реАрдЯ
{
рдЕрдЧрд░ (рдЫрд╡рд┐ рджреГрд╢реНрдп) {
imageView = [[CPImageView рдЖрд╡рдВрдЯрди] initWithFrame: CGRectMake (10, 5, 48, 48)];
[рд╕реНрд╡рдпрдВ addSubview: imageView];
userLabel = [[CPTextField рдЖрд╡рдВрдЯрд┐рдд] initWithFrame: CGRectMake (65, 0, -60, 18)];
[userLabel setAutoresizingMask: CPViewWidthSizable];
[userLabel setFont: [CPFont boldSystemFontOfSize: 12]];
[рдЖрддреНрдо AddSubview: userLabel];
tweetLabel = [[CPTextField рдЖрд╡рдВрдЯрд┐рдд] initWithFrame: CGRectMake (65, 18, -60, 100)];
[tweetLabel setAutoresizingMask: CPViewWidthSizable];
[tweetLabel setLineBreakMode: CPLineBreakByWordWrapping];
[рдЖрддреНрдо AddSubview: tweetLabel];
}
[imageView setImage: [[CPImage рдЖрд╡рдВрдЯрди] initWithContentsOfFile: tweet.profile_image_url рдЖрдХрд╛рд░: CGSizeMake (48, 48)]];
[userLabel setStringValue: tweet.from_user];
[tweetLabel setStringValue: tweet.text];
}
@end
setRepresentedObject:
рд╡рд┐рдзрд┐ рдПрдХ рдЕрд╡рддрд╛рд░ рдЫрд╡рд┐ рдФрд░ рджреЛ рдЯреИрдЧ рдмрдирд╛рддреА рд╣реИ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдЯреНрд╡реАрдЯ рдХреЗ рд╕рд╛рдеред
рдЕрдм рдлрд┐рд░ рд╕реЗ index-debug.html рдЦреЛрд▓реЗрдВ рдФрд░ рдХреБрдЫ рд╢рдмреНрджреЛрдВ рдХреЛ рджреЗрдЦреЗрдВред рдкрд░рд┐рдгрд╛рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
рдЖрдк
рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг
рдХреЛрдб рджреЗрдЦ рд╕рдХрддреЗ
рд╣реИрдВ рдФрд░ рдЙрд╕рдХрд╛
рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?
рдмреЗрд╢рдХ, рдЗрд╕ рдирд┐рдмрдВрдз рдореЗрдВ рдХреИрдкреНрдкреБрдХрд┐рдиреЛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рджрд╕рд╡рд╛рдВ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдм рдЖрдк рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдореИрдВ рдЖрдкрд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдкрдиреЗ рдЬреНрдЮрд╛рди рдХреЛ рдЧрд╣рд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рдХреИрдкреБрдЪреАрдиреЛ рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдореИрдВ рднреА рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдмрд╣реБрдд
рд╕рд╛рд░реЗ рдХрд╛рдЧрдЬрд╝ рдХреЗ рдЯреБрдХрдбрд╝реЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдлреНрд░рд╛рдВрд╕рд┐рд╕реНрдХреЛ, рдЯреЙрдо рдФрд░ рд░реЙрд╕ рдХреЗ рдЯрд╛рдЗрдЯреИрдирд┐рдХ рдХрд╛рдо, рд╕рд╛рде рд╣реА рд╕рд╛рде рдореЗрд░рд╛ рд╡рд┐рдирдореНрд░ рдирд┐рдмрдВрдз рдЖрдк рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдПрдХ рдирдпрд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ред