рдЖрдкрдХрд╛ рджрд┐рди рд╢реБрдн рд╣реЛ!
рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореИрдВ рдЦреБрдж рдХреЛ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ / рдЖрдИрдУрдПрд╕ рдХреЗ рддрд╣рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рднрд╛рд╖рд╛ / рдордВрдЪ рд╕реАрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рдПрдХ рджреЗрд╢реА рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд░реБрдЪрд┐ рдХрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ C рдФрд░ C ++ рд╕реЗ Nodejs рддрдХ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЕрдм рдлреИрд╢рдиреЗрдмрд▓ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдХреНрдпреВрдЯреА рдЬреИрд╕реЗ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рдпрд╣рд╛рдВ рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИрдВ, рдпрджрд┐ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╡реЗ рдореВрд▓ рд░реВрдк рдФрд░ рд▓реБрдХ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рдУрдПрд╕ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рднрд╛рд╖рд╛ рдФрд░ рд╣реИрдмреЛ рдкрд░ рдХреЛрдХреЛ рдврд╛рдВрдЪреЗ рдХреА рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд╣реИрдВред GUI рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдХреЛрдХреЛ рдмреНрдпрд╛рдЬ рдХреА рд╣реИ, рдФрд░ рдпрд╣рд╛рдБ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЗрдЦ рдмрдЯрди рдФрд░ рдкрд╛рда рдХреНрд╖реЗрддреНрд░ рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред рдореИрдВ рдЗрд╕ рдЧрд▓рддрдлрд╣рдореА рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдПрдХ рд╕реВрдЪреА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЯреЗрдмрд▓ рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рд▓реЗрдЦ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реА рд╣реИ рдФрд░ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реБрд░реБрдЖрдд рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИред рддреНрд░реБрдЯрд┐рдпреЛрдВ рдФрд░ рд░рдЪрдирд╛рддреНрдордХ рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ, рдмрд┐рд▓реНрд▓реА рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рд╕рд┐рджреНрдзрд╛рдВрдд
рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЯреЗрдмрд▓ рд╡реНрдпреВ рдХреЗ рдХреБрдЫ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЪрд▓реЛ рдЙрдирдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЯреЗрдмрд▓ рд╡реНрдпреВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг [1] рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣рд╛рдВ рдореИрдВ рдЦреБрдж рдХреЛ рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд╛рд░рд╛рдВрд╢ рддрдХ рд╕реАрдорд┐рдд рдХрд░реВрдВрдЧрд╛ред
рддрд╛рд▓рд┐рдХрд╛ рджреЗрдЦреЗрдВ рдкреНрд░рдХрд╛рд░
рдЯреЗрдмрд▓ рд╡реНрдпреВ рдХреЗ рджреЛ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:
- рд╕реЗрд▓-рдЖрдзрд╛рд░рд┐рдд - рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдмрд▓ рд╕реЗрд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ NSCell рдХреЗ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрдЯрд┐рд▓ рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ NSCell рдХреЛ рдЙрдкрд╡рд░реНрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред Mac OS X рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ 10.6 рдФрд░ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдХреЗрд╡рд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдореМрдЬреВрдж рдереАред
- рджреГрд╢реНрдп-рдЖрдзрд╛рд░рд┐рдд - рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд▓ рдПрдХ рдЕрд▓рдЧ рджреГрд╢реНрдп рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рдЬрдЯрд┐рд▓ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдиреАрдореЗрд╢рди рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде, рдмрд╣реБрдд рдХрдард┐рдирд╛рдИ рдХреЗ рдмрд┐рдирд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреЗрд╡рд▓ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ 10.7 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреАред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо
рд╕реЗрд▓-рдЖрдзрд╛рд░рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдп рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ, рд╕рдорд╛рдзрд╛рди рд╕рд░рд▓ рд╣реЛрдЧрд╛ рдФрд░ рди рдХреЗрд╡рд▓ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рддрд╛рд▓рд┐рдХрд╛ рджреГрд╢реНрдп рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг
рдбреЗрдЯрд╛ рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рдЯреЗрдмрд▓ рд╡реНрдпреВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ (рдЗрдВрдЯрд░рдлреЗрд╕) NSTableViewDelegate , NSTableViewDataSource , рдФрд░ рдлрд┐рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡реНрдпреВ рдмрд┐рд▓реНрдбрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рджреГрд╢реНрдп рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░рдирд╛ред рдЖрдкрдХреЛ рдЖрдЙрдЯрд▓реЗрдЯреНрд╕ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдФрд░ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдмрд╛рдБрдзрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ, рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:
- numberOfRowsInTableView: - рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
- tableView: objectValueForTableColumn: рдкрдВрдХреНрддрд┐: - рдкрдВрдХреНрддрд┐ рддрд░реНрдХ рдореЗрдВ рдкрд╛рд░рд┐рдд рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рддрддреНрд╡ рджреЗрддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреЙрд▓рдо рд╕рдВрдЦреНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рджреВрд╕рд░реЗ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдСрдмреНрдЬреЗрдХреНрдЯрд╡реИрд▓реНрдпреВрдлрд╝реЛрд░рдЯреЗрдмрд▓ рдХреЙрд▓рдо ред
- рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ (рдмрд╛рдЗрдВрдбрд┐рдВрдЧ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдпрд╣ рддрдХрдиреАрдХ рдореЙрдбрд▓-рд╡реНрдпреВ-рдХрдВрдЯреНрд░реЛрд▓рд░ (MVC) рдкреИрдЯрд░реНрди [2] рдФрд░ рдХреЛрдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рддрдХрдиреАрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред MVC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдиреЗ рдХрд╛ рд╢рд╛рдпрдж рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ - рд╣рд░ рдХрд┐рд╕реА рдиреЗ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реИ, рдФрд░ рдЬрд┐рд╕рдиреЗ рднреА рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ рд╡рд╣ рд╡рд┐рдХреА рдкрд░ рд▓рд┐рдВрдХ рдкрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЛрдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рдХреЛрдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ
рдХреЛрдХреЛ OS X 10.3 рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рдмрд╛рдж рд╕реЗ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рдореЙрдбрд▓ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рджреГрд╢реНрдп рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред
рдХреЛрдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рджреЛ рддрдВрддреНрд░реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ:
- рдХреА-рд╡реИрд▓реНрдпреВ рдХреЛрдбрд┐рдВрдЧ (KVC) - рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рдирд╛рдо рд╕реЗ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЦреЗрддреЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХрд╛ рдПрдХ рддрдВрддреНрд░ред
- рдХреА-рд╡реИрд▓реНрдпреВ рдСрдмреНрдЬрд░реНрд╡рд┐рдВрдЧ (KVO) - рдПрдХ рддрдВрддреНрд░ рдЬреЛ рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдХреЛрдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА [3] рдореЗрдВ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред
рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрднреНрдпрд╛рд╕
Xcode рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдирдпрд╛ рдХреЛрдХреЛрдЖ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВред рдЪрд▓реЛ рдЗрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕ рдореЙрдирд┐рдЯрд░ рдХрд╣рддреЗ рд╣реИрдВред рдореИрдВ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд╕рдордп Xcode (4.2.1) рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЪрд░рдг рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдЬреАрдпреВрдЖрдИ рдирд┐рд░реНрдорд╛рдг
MainMenu.xib рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ, рдЗрд╕рдореЗрдВ рд╡рд┐рдВрдбреЛ рдЪреБрдиреЗрдВред рд╣рдо рдЗрд╕реЗ 500 рд╕реЗ 480 рддрдХ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдЖрдХрд╛рд░ рдирд┐рд░реАрдХреНрд╖рдХ (рджрд╛рдИрдВ рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рд╢рд╛рд╕рдХ рдЖрдЗрдХрди) рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рд╣рдо рдиреНрдпреВрдирддрдо рдЖрдХрд╛рд░ - рдЪреЗрдХрдмреЙрдХреНрд╕ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░реЗрдВрдЧреЗред
рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА (рд╡рд┐рдВрдбреЛ рдХреЗ рдирд┐рдЪрд▓реЗ рджрд╛рдИрдВ рдУрд░ рд╕реНрдерд┐рдд рдХреНрдпреВрдм рдЖрдЗрдХрди) рд╕реЗ рд╡рд┐рдВрдбреЛ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рджреГрд╢реНрдп рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ (рд╢рдмреНрдж "рдЯреЗрдмрд▓" рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗрдВ)ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реЗрд▓-рдЖрдзрд╛рд░рд┐рдд рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдЖрдк рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдЧреБрдг рдирд┐рд░реАрдХреНрд╖рдХ рдХреЛ рдЦреЛрд▓рддреЗ рд╣реИрдВ (рджрд╛рдПрдВ рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ, рдкрдВрдХреНрддрд┐ рдХреЗ рдмрд╛рдИрдВ рдУрд░)ред рд╣рдо рдЯреЗрдмрд▓ рд╡реНрдпреВ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдпрд╣ рдкреВрд░реА рдЦрд┐рдбрд╝рдХреА рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░ рд▓реЗред рдлрд┐рд░ рд╣рдо рдЖрдХрд╛рд░ рдирд┐рд░реАрдХреНрд╖рдХ рдЦреЛрд▓рддреЗ рд╣реИрдВ рдФрд░ рдСрдЯреЛрд╕рд╛рдЗрдЬрд┐рдВрдЧ рдЪрд┐рддреНрд░ рдореЗрдВ рд╣рдо рд╕рднреА рддрддреНрд╡реЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕рд╛рде-рд╕рд╛рде рддрд╛рд▓рд┐рдХрд╛ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЕрдм рд╣рдореЗрдВ рд╕реНрддрдВрднреЛрдВ рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рддреАрди рдХреЙрд▓рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдкреАрдЖрдИрдбреА, рдЖрдЗрдХрди рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдирд╛рдоред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рджреЛ рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдЗрд╕ рдирдВрдмрд░ рдХреЛ 3. рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛ рдореЗрдВ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЯреЗрдмрд▓ (рдЯреЗрдмрд▓ рд╡реНрдпреВ) рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЦрд┐рдбрд╝рдХреА рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рдореЗрдВ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд╡рд╛рдВрдЫрд┐рдд рдПрдХ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИред рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ: рдпрд╛ рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рд╡рд┐рдВрдбреЛ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Xcode 4 рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдерд╛, рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ), рдпрд╛ рдХрдорд╛рдВрдб + рдХрдВрдЯреНрд░реЛрд▓ + рд╢рд┐рдлреНрдЯ рд╡рд╛рдВрдЫрд┐рдд рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╡рд┐рдВрдбреЛ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЧреБрдг рдирд┐рд░реАрдХреНрд╖рдХ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдХреЙрд▓рдо рдХреЗ рдорд╛рди рдХреЛ 3 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред
рдЕрдм рдХреЙрд▓рдо рдХреЛ рдирд╛рдо рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рдпрд╣ рдХреЙрд▓рдо рд╣реИрдбрд░ рдкрд░ рдбрдмрд▓-рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдХреЙрд▓рдо рдХрд╛ рдирд╛рдо PID рд╣реИ, рджреВрд╕рд░рд╛ рдЦрд╛рд▓реА рд╣реИ, рддреАрд╕рд░рд╛ рдкреНрд░реЛрд╕реЗрд╕ рдирд╛рдо рд╣реИред
рд╣рдо рдЯреЗрдмрд▓ рдХреЙрд▓рдо рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрддрдВрдн рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдЖрдХрд╛рд░ рдирд┐рд░реАрдХреНрд╖рдХ рдореЗрдВ рд╕реЗрдЯ рдХрд░реЗрдВред рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП (рдкреАрдЖрдИрдбреА): 60, рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП (рдЖрдЗрдХрди): 40, рддреАрд╕рд░реЗ рдХреЗ рд▓рд┐рдП (рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдирд╛рдо) - рд╢реЗрд╖ рд╕рднреА рд╕реНрдерд╛рдиред
рдЯреЗрдХреНрд╕реНрдЯ рд╕реЗ рдЫрд╡рд┐ рддрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рджреВрд╕рд░реЗ рдХреЙрд▓рдо рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдЗрдореЗрдЬ рд╕реЗрд▓ ("рдЗрдореЗрдЬ" рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬреЗрдВ) рдвреВрдВрдвреЗрдВ рдФрд░ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдХреЙрд▓рдо рдореЗрдВ рдЦреАрдВрдЪреЗрдВред
рдЗрди рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рдЖрдк рд░рди рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬреЛрдбрд╝рдирд╛
рдЕрдм рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░реЗрдЧрд╛ред рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рдХрд╛рд░ NSArrayController рд╣реИред рд╣рдо рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА ("рд╕рд░рдгреА" рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ) рдореЗрдВ рдвреВрдВрдврддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реВрдЪреА рдореЗрдВ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред
рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдВрдбрд░ рд╕реЗрдЯ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛ рджреГрд╢реНрдп рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ (рджрд╛рдИрдВ рд╕рд╛рдЗрдбрдмрд╛рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдЯреИрдм) рдкрд░ рдЬрд╛рдПрдВред рд╡рд╣рд╛рдВ, рддрд╛рд▓рд┐рдХрд╛ рд╕рд╛рдордЧреНрд░реА рдЕрдиреБрднрд╛рдЧ рдореЗрдВ, рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдмрд┐рдВрдж рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ: рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдирд┐рдпрдВрддреНрд░рдХ: рдЕрд░реЗрдВрдЬрдореЗрдВрдЯред
рдЕрдм рд╣рдо KVC рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХреЛ рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо (рддрд╛рд▓рд┐рдХрд╛ рд╕реНрддрдВрдн) рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдореЗрдВ рд╣рдо рдорд╛рди рдХреЛ рдмрд╛рдЗрдВрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ: рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдРрд░реЗ рдирд┐рдпрдВрддреНрд░рдХ: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдСрдмрдЬреЗрдХреНрдЯреНрд╕ред рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП, рдореЙрдбрд▓ рдХреБрдВрдЬреА рдкрде рдорд╛рди рдХреНрд░рдорд╢рдГ рд╣реИрдВ: processIdentifier, icon, localizedNameред рдРрд╕реЗ рдорд╛рди рдХреНрдпреЛрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рдЯреЗрдмрд▓ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд┐рдпрд╛ред рдпрд╣ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рд╕рдВрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЗрди рдмрд╣реБрдд рдбреЗрдЯрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдВрдЧреЗред AppDelegate.h рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓реЗрдВ рдФрд░ NSArray рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
@property (retain) NSArray* contents;
рдлрд╝рд╛рдЗрд▓ рдореЗрдВ AppDelegate.m рд▓рд┐рдЦреЗрдВ:
@synthesize contents;
рдЕрдм MainMenu.xib рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛рдПрдВ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЛ рдмрддрд╛рдПрдВ рдХрд┐ рдХрд┐рд╕ рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВ рдФрд░ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрдВрдЯреЗрдВрдЯ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдмрд╛рдЗрдВрдб рдЯреВ рдХрдВрдЯреЗрдВрдЯ рдПрд░реЗ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ: рдРрдк рдбреЗрд▓рд┐рдЧреЗрдЯ, рдФрд░ рдореЙрдбрд▓ рдХреА рдкрд╛рде: рдХрдВрдЯреЗрдВрдЯред
рдЗрд╕ рдкрд░, рдмрд╛рдЗрдВрдбрд░реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рд╣рдореЗрдВ рдмрд╕ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде AppDelegate рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд╕рд░рдгреА рдореЗрдВ рднрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЪрд▓ рд░рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рд╕рднреА рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд▓реЗрдЦ рдореЗрдВ рд▓рд┐рдЦреВрдВрдЧрд╛ред рдЕрдм рдЪрд▓реЛ рдХреЛрдХреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦреЗрдВред рд╡рд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрднреА рддрдХ рд╣рдореЗрдВ рдЪрд┐рдВрддрд┐рдд рди рд╣реЛрдиреЗ рджреЗрдВред
AppDelegate рдореЗрдВ updateProcessList рдкрджреНрдзрддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
- (void)updateProcessList { NSWorkspace* workspace = [NSWorkspace sharedWorkspace]; self.contents = [NSArray arrayWithArray:[workspace runningApplications]]; }
рдЪрд▓рд┐рдП рдЗрд╕ рд╡рд┐рдзрд┐ рдХреЛ рдХрдХреНрд╖рд╛ рдореЗрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдмрдирд╛рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмрд┐рдирд╛ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдХреЛрдб рдкрд░ рдПрдХ рдЫреЛрдЯреА рдЯрд┐рдкреНрдкрдгреАред рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рд╣рдореЗрдВ
NSWorkspace рдХрдХреНрд╖рд╛ рдХреА рдПрдХ рд╡рд╕реНрддреБ
рдорд┐рд▓рддреА рд╣реИ ред рдЗрд╕ рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдПрдХрд▓ рдкреНрд░рддрд┐, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд┐рдВрдЧрд▓рдЯрди рдореЗрдВ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдЗрд╕реЗ
рд╢реЗрдЕрд░рд╡рд░реНрдХ рдХреНрд╖реЗрддреНрд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ
рд░рдирд┐рдВрдЧ рдРрдкреНрд▓рд┐рдХреЗрд╢рдВрд╕ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рд╕рд░рдгреА рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдПрдХ рд╕реВрдЪреА рджреЗрддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИред рдФрд░ рд╣рдо рдЗрд╕ рд╕рд░рдгреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рд╕рд░рдгреА рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡
NSRunningApplication рд╡рд░реНрдЧ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ рдХрдИ рдЧреБрдг рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ
рдкреНрд░рдХреНрд░рд┐рдпрд╛рдкреНрд░рджрд╛рддрд╛ рд╣реИрдВ ,
рдЖрдЗрдХрди ,
рд╕реНрдерд╛рдиреАрдпрдХреГрдд рдирд╛рдо ред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рдЙрдиреНрд╣реЗрдВ рдЯреЗрдмрд▓ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ? рддреЛ, KVC рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж,
NSRunningApplication рдХреЗ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреМрд░рд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЕрдм рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рджреМрд░рд╛рди рдмрдирд╛рдИ рдЧрдИ рд╡рд┐рдзрд┐ рдореЗрдВ рдПрдХ рдХреЙрд▓ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
[self updateProcessList];
ApplicationDidFinishLaunching рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдПред
рдЖрд╡реЗрджрди рд╕рдорд╛рдкреНрддрд┐
рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдореЗрдВ, рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рд╡рд┐рдВрдбреЛ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЕрд░реНрде рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреВрд░реНрдгрддрд╛ рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - AppDelegate.m рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛрдбрд╝рдХрд░:
- (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)sender { return YES; }
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрдм рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рддреИрдпрд╛рд░ рд╣реИред рдпрджрд┐ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдПрдХ рдЕрднреНрдпрд╛рд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдкрд╛рдардХ рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╕реВрдЪреА рдХреЗ рдЖрд╡рдзрд┐рдХ рдЕрджреНрдпрддрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
NSTimer рд╡рд░реНрдЧ рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ
рдЕрдиреБрд╕реВрдЪрд┐рдд TimerWithTimeInterval рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ [5]ред
рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдордиреЗ рдЯреЗрдмрд▓ рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд░рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рджреЗрдЦрд╛ред рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рдХреА рдЧрдИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереАред рд╕рдм рдХреБрдЫ рдЬреЛ рд╕рд░рд▓реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛ - рдЦрд┐рдбрд╝рдХреА рдирд┐рдпрдВрддреНрд░рдХ (
NSWindowController ), рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ (
NSViewController ), рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрди рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдорд╛рдирд╛ рдЧрдпрд╛ред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреЗрдбрд╝ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕реВрдЪреА (
NSOutlineView ) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВред рдФрд░, рдЕрдЧрд░ рд╡рд╣рд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рдХреЛрдб рд╣реИ, рддреЛ рдореИрдВ рдЧрд┐рддреБрдм рдкрд░ рдПрдХ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдмрдирд╛рдКрдВрдЧрд╛ред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рднреА рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж!рд╕рдВрджрд░реНрдн
- рдЯреЗрдмрд▓ рд╡реНрдпреВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд╛рдЗрдб (рдПрди)
- рдореЙрдбрд▓ - рджреГрд╢реНрдп - рдирд┐рдпрдВрддреНрд░рдХ рдкреИрдЯрд░реНрди (рдПрди)
- рдХреЛрдХреЛ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдЬреЙрдмреНрд╕
- NSWorkspace рдХрдХреНрд╖рд╛ рд╕рдВрджрд░реНрдн (рдПрди)
- NSTask рдХрдХреНрд╖рд╛ рд╕рдВрджрд░реНрдн (рдПрди)
Updред рдХрд░реНрдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдФрд░ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред