C ++ рдХреЛ Objective-C рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ

рдпрд╣ рд╡рд┐рд╖рдп рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реА ++ рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рдХрд╛ рдореЗрд░рд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ, рдЬреЛ рд╕рдлрд▓ рдФрд░ рдЕрд╕рдлрд▓ рджреЛрдиреЛрдВ рдХреЗ рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред рдореВрд▓ рд▓реЗрдЦ:
www.philjordan.eu/article/strategies-for-using-c++-in-objective-c-projects

рдЗрд╕ рдкреНрд░рдХрд╛рд░,

C ++ рдХреЛ Objective-C рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ


рдпрджрд┐ рдЖрдк рдЬрд▓реНрджреА рдореЗрдВ рд╣реИрдВ рдФрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдБрдЪрд╛рдП рдмрд┐рдирд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╕реА ++ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╢реБрджреНрдз рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рддреЛ рдЖрдк рд▓реЗрдЦ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд┐рдВрдкрд▓ рд╣реЗрдбрд░ рдкрд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ ~ 95% рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╛рдХреА рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЧрд╣рд░рд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реАрдХреЗ рд╣реИрдВред

рдХреНрдпреЛрдВ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдФрд░ рд╕реА ++ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ?


рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЖрдорддреМрд░ рдкрд░ рдЖрдИрдУрдПрд╕ рдХреЗ рддрд╣рдд рдпрд╛ рдореИрдХ рдХреЗ рддрд╣рдд рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдХреНрд╕рд░ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЖрддрд╛ рд╣реВрдВ рдЬрдм рдореБрдЭреЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕реА ++ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрднреА-рдХрднреА рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реА ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдХрднреА-рдХрднреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╕реА ++ рдореЗрдВ рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг C ++ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдорд╛рдирдХ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрдЪрд╛рддрд╛ рд╣реИред рдХрдо рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрднреА-рдХрднреА рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрдб рднреА рд╣реЛрддрд╛ рд╣реИред рдпрд╣ "рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП-рдЬрд┐рдирдХреЗ-рд╕реЗ-рд╣рд░-рд╡рд╕реНрддреБ-рдПрдХ-рд╡рд╕реНрддреБ рд╣реИ" рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд░реНрдо рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреИрд░-рддреБрдЪреНрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдУрд░рд┐рдПрдВрдЯреЗрд╢рди рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ Sysn рд╕рдВрд░рдЪрдирд╛рдПрдВ рднреА рдХрдордЬреЛрд░ рд╣реЛрддреА рд╣реИрдВред C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рд╣реА рд╣реИред

рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рднреА рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХрд╛рдлреА рдЖрдХреНрд░рд╛рдордХ рд╣реИ, рдЬрдм рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХрдЪрд░рд╛ рдХрд▓реЗрдХреНрдЯрд░ред рдПрд╕рдЯреАрдПрд▓ (рдФрд░ рдЗрд╕рдХрд╛ рдирдпрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рд╛рдЭрд╛_рдкреНрдЯреНрд░) рдЖрдкрдХреЛ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ / рдбрд┐рд╕реНрдЯреНрд░рдХреНрдЯрд░реНрд╕ рдореЗрдВ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рд░рд┐рд▓реАрдЬ рдФрд░ рд░рд┐рдЯрд░реНрдиреНрд╕ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдмреЗрд╢рдХ, рдпрд╣ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдФрд░ рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ; рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди рдЧреИрд░-рддреБрдЪреНрдЫ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдпрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдорд┐рдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдХреЛрдб рдореЗрдВ рдХреЛрдб рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

Objective-C рдФрд░ C ++ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдЕрдиреНрдп рдХрд╛рд░рдг рд╡рд┐рдкрд░реАрдд рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрдм рдЖрдкрдХреЛ C ++ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ Objective-C рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрджрд╛рд╣рд░рдг рдПрдХ рдЧреЗрдо рдпрд╛ рдЗрдВрдЬрди рдХреЛ рдРрдкреНрдкрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рддрдХрдиреАрдХреЛрдВ рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП C ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди, рдЖрдзреБрдирд┐рдХ рд░рдирдЯрд╛рдЗрдореНрд╕ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдХреИрд╢рд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдЕрдзрд┐рдХрд╛рдВрд╢ C ++ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рд▓рд╛рдЧрдд рд▓рдЧрд╛рддрд╛ рд╣реИред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдорд╛рди рддреЗрдЬ рдЧреИрд░-рдЖрднрд╛рд╕реА C ++ рдлрд╝рдВрдХреНрд╢рди рдирд╣реАрдВ рд╣реИрдВред рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдЖрдо рд╣рд░ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА: рд╕реА


рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрди рджреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЙрдиреНрд╣реЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╢реБрджреНрдз рд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЙрдирдХреЗ "рдорд┐рд╢реНрд░рдг" рдХреЛ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛: C ++ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб .cpp рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ C рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, C ++ рднрд╛рдЧ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдмрд╛рд╣рд░реА "C" рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣ рдХреЛрдб рдЬрд┐рд╕рдореЗрдВ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред C рд╢реБрджреНрдз рдЙрджреНрджреЗрд╢реНрдп-рд╕реА (.m) рд╣реИред

рдпрд╣ рд╕рд░рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдХреБрдЫ рд╢реЗрд▓ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЬреЛ рдХреЛрдИ рднреА рдЦреБрд▓реЗ рд╕реА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рднрд░реА рд╣реБрдИ рд╕реА ++ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд╕рд╛рде рдЕрдиреБрднрд╡ рдХрд░рддрд╛ рд╣реИ, рд╡рд╣ рдЗрд╕ рдмрд╛рдд рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рдЬрд╛рдирддрд╛ рд╣реИред

рдЖрдЬ, рд▓рдЧрднрдЧ рд╕рднреА рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреЛ рдЬреАрд╕реАрд╕реА рдпрд╛ рдХреНрд▓реИрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рджреЛрдиреЛрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА ++ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рд╣реИред

рдЙрджреНрджреЗрд╢реНрдп-рд╕реА ++ рдФрд░ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ


рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЙрджреНрджреЗрд╢реНрдп-рд╕реА ++ рдмреЛрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИред рдпрд╣ рд╕реА + + рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛ рдПрдХ рд╕рдВрдХрд▓рдХ рдореЗрдВ рдПрдХ рд╕рд╛рде рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреАрд╕реАрд╕реА рдФрд░ рдХреНрд▓реИрдВрдЧ рджреЛрдиреЛрдВ рдореЗрдВ рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдФрд░ рд╕реА ++ рдХреИрд╕реЗ рд╣реИрдВ, рдЬреАрд╕реАрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░реНрд╕ рдиреЗ рдПрдХ рдХрдард┐рди рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдЖрдк рдирд╛рдо рдмрджрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ .m рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛред C ++ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред

рд╣реЗрдбрд░ рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд╕реА рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕реА, рд╕реА ++ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░рджрд░реНрдж рдХрд╛ рдХрд╛рд░рдг рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдЬрдм рдЖрдк рдЗрди рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЪреАрдЬреЗрдВ рдФрд░ рднреА рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрд╕рдЯреАрдПрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдирдХреНрд╢рд╛ рдХрдВрдЯреЗрдирд░ (рд╢рдмреНрджрдХреЛрд╢, рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдореБрдЭреЗ рдкрддрд╛ рд╣реИ, Apple рдХреЗ рдлрд╛рдЙрдВрдбреЗрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ рдкреЗрдбрд╝реЛрдВ рдкрд░ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдПрдХ рдЫрд╛рдВрдЯрд╛ рд╣реБрдЖ рдирдХреНрд╢рд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдореЗрдВ рдПрдХ рд╕рджрд╕реНрдп рдЪрд░ рдмрдирд╛рдПрдВ:
#include <map> @interface MyClass : NSObject { @private std::map<int, id> lookupTable; } // ... @end 

рд╣рд╛рд▓рд╛рдБрдХрд┐, std :: map <int, id> рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрдХрд▓рдХ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬреЛ C ++ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ #include рдХреЗ рдмрд╛рдж, рдЗрд╕рд▓рд┐рдП рдЕрдм рдпрд╣ рд╢реАрд░реНрд╖ рд▓реЗрдЦ рдлрд╝рд╛рдЗрд▓ рдХреЗрд╡рд▓ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА ++ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ (#import) рдЖрдпрд╛рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рдХреЛрдб рдХреЛ рдЕрдм Objective-C ++ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЧреЗ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд╕рд╛рде, рдмрд╛рдХреА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рднреА (.mm) рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣ рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рдеред

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдкреВрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдпрд╛ рдЙрд╕рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓рдирд╛ рдмрд╣реБрдд рдмреЛрдЭрд┐рд▓ рдФрд░ рдирд┐рд░рд░реНрдердХ рд╣реИ; рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдмреАрдЪ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реИрдВ рдЬреЛ C ++ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╢реБрджреНрдз C ++ C рд╕рдВрдХрд▓рдХ рдореЗрдВ рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рд╕рдорд╕реНрдпрд╛рдПрдВ рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд░реНрдж рд░рд╣рд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдб рдХреЛ рдЕрдиреНрдп рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╢реБрджреНрдз рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдпрд╛ рд╕реА ++ рдореЗрдВ рдХреЛрдб рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА ++ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдФрд░ рдХреЗрд╡рд▓ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдкрдиреЗ рдкреИрд░ рдХреА рд╢реВрдЯрд┐рдВрдЧ: рд╢реВрдиреНрдп *


рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ C ++ рдХрд╛ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдиреЗ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╣реИред рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реА рддрд░реАрдХрд╛ рд╢реВрдиреНрдп рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдпрд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛:
 @interface MyClass : NSObject { @private //    std::map<int, id>* void* lookupTable; } // ... @end 

рдХреЛрдб рдХреЗ рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЬрд╣рд╛рдВ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЖрдкрдХреЛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд╛рд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: static_cast <std :: map <int, id> * (рд▓реБрдХрдЕрдкрдЯреЗрдмрд▓) рдпрд╛ ((std :: map <int, id> * * рд▓реБрдХрдЯреЗрдмрд▓), рдЬреЛ рдмрд╣реБрдд рдЧреБрд╕реНрд╕рд╛ рдЖрдПрдЧрд╛ред рдпрджрд┐ рдХрдХреНрд╖рд╛ рдХреЗ рд╕рджрд╕реНрдп рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рдХрд╛рд░ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдЧрд▓рддреА рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред рд╕рджрд╕реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рд╕рд╛рде, рд╕рднреА рд╕рд╣реА рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреБрдХрд╕рд╛рди рдорд┐рд▓рддреЗ рд╣реИрдВред рдХрдХреНрд╖рд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдЧ рдХреЗ рд╕рд╛рде рдПрдХ рдЦрддрд░рдирд╛рдХ рдЦреЗрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдП * рдФрд░ рдмреА * рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╢реВрдиреНрдп рд╣реИрдВ *

рдЖрдк рдмреЗрд╣рддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╢рд░реНрдд рд╕рдВрдХрд▓рди


рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдирд╛ рдмреБрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ C ++ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛрдб рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╢реБрджреНрдз рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреЗрд╡рд▓ рдЙрдирдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ (рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдХреЛрдб рдХреЗ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдВрд╕реНрдХрд░рдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ ? рдЙрджреНрджреЗрд╢реНрдп-рд╕реА ++, _ рдЕрдзрд┐рд╢реЗрд╖ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдкреНрд░рддреАрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
 #ifdef __cplusplus #include <map> #endif @interface MyClass : NSObject { @private #ifdef __cplusplus std::map<int, id>* lookupTable; #else void* lookupTable; #endif } // ... @end 

рдмрджрд╕реВрд░рдд, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ C ++ рдорд╛рдирдХ рдЗрд╕ рдмрд╛рдд рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдФрд░ рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рд╕рдорд╛рди рдореЗрдореЛрд░реА рд▓реЛрдХреЗрд╢рди (рдСрдмреНрдЬреЗрдХреНрдЯ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рдорд╛рди рд╣реИ) рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди Objective-C ++ рдПрдХ GNU / Apple рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХреЗрд╡рд▓ рд╡рд░реНрдЪреБрдЕрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдкреЙрдЗрдВрдЯрд░реНрд╕ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рд╢реВрдиреНрдп * рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдЬрд╝реЛрд░ рд╕реЗ рд╢рдкрде рд▓реЗрдЧрд╛ред рдпрджрд┐ рдЪрд┐рдВрддрд╛ рдмрдиреА рд░рд╣рддреА рд╣реИ, рддреЛ рдЖрдк C- рд╕реНрдЯрд╛рдЗрд▓ рдХрд╛рд╕реНрдЯ рдХреЗ рдмрдЬрд╛рдп static_cast <> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

C рдЕрднреА рднреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ * рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдкреЙрдЗрдВрдЯрд░ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП C #ifdef рд╕реЗрдХреНрд╢рди рдХреЛ рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рдХреЙрдореНрдкреНрд▓реЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЗ рд╕рд╛рде рд░рд┐рдкреНрд▓реЗрд╕ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпреВрдиреАрдХ рдФрд░ рдкрд╣рдЪрд╛рдиреЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд╛рдо, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдЯреНрд░рдХреНрдЪрд░ MyPreb_std_map_int_idред рдЖрдк рдПрдХ рдореИрдХреНрд░реЛ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд╣реА рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рддрдХ рдлреИрд▓реА рд╣реБрдИ рд╣реИ:
 #ifdef __cplusplus #define OPAQUE_CPP_TYPE(cpptype, ctype) cpptype #else #define OPAQUE_CPP_TYPE(cpptype, ctype) struct ctype #endif // ... #ifdef __cplusplus #include <map> #endif @interface MyClass : NSObject { @private OPAQUE_CPP_TYPE(std::map<int, id>, cpp_std_map_int_id)* lookupTable; } // ... @end 

рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рд╢рд░реНрдд #include C ++ рд╣реЗрдбрд░ рд╕реЗ рдмрдЪ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕реА ++ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдпрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рдБ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рд╣реИрдВред

рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ, рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓


рдХрдИ рд╕реА ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╢реБрджреНрдз рдЖрднрд╛рд╕реА рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рд╛рд░ рдХрдХреНрд╖рд╛рдПрдВред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЬрд╛рд╡рд╛ рдФрд░ рд╕реА #, рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" рдЕрд╡рдзрд╛рд░рдгрд╛ рд╣реИ, рдЬреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЫрд┐рдкрд╛рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╕рдкреЛрд░реНрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╣рд╛рд▓рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдЬреЛ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдореЗрдВ рдЬрд╛рд╡рд╛ / рд╕реА # рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдпрджрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИрдВред рдЖрдк рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреА рдШреЛрд╖рдгрд╛ рдФрд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдмрдВрдж рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕ рдкреНрд░рдХрд╛рд░ C ++ рдФрд░ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдХреЛ рдЕрд▓рдЧ рдХрд░рддрд╛ рд╣реИ)ред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдзреЗ рд╡рд░реНрдЧ рдХреЛ рддреБрд░рдВрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рдХреНрд▓рд╛рд╕ рдлреИрдХреНрдЯреНрд░реА рдпрд╛ рдлрдВрдХреНрд╢рди C. рдХреЗ рд▓рд┐рдП рдореЗрдореЛрд░реА рдПрд▓реЛрдХреЗрд╢рди рдФрд░ рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдЗрд╕рд╕реЗ рднреА рдмреБрд░реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреБрдЫ рдЕрд░реНрдереЛрдВ рдореЗрдВ рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╕реЗ рд▓реЗрдХрд░ рдХреНрд▓рд╛рд╕реЗрд╕ рддрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрд┐рд╕реА рд▓рд┐рдВрдХ рдХреЛ рдШреЛрд╖рд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЕрд▓рдЧ рджрд┐рдЦреЗрдЧрд╛:
 id<MyProtocol> ref; 

рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЗ рдмрдЬрд╛рдп:
 MyClass* ref; 

рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрджрд░реНрд╢ рднреА рдирд╣реАрдВ рд╣реИред

рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдореЗрдВ рд╕рд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ


рддреЛ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдЗрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рдкреНрд░рддреНрдпрдХреНрд╖ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдПрдирдПрд╕рдПрд╕рдЯреНрд░рд┐рдВрдЧ рднреА рд╕рд╛рд░ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдордЭрдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рд╕рднреА рд╡рд┐рдзрд┐ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рд▓реЗрдирд╛ рдФрд░ рдЙрди рд╕рднреА рдХреЛ рдРрд╕реА рдХрдХреНрд╖рд╛ рдореЗрдВ рд░рдЦрдирд╛ рд╣реИред рдЖрдкрдХреЛ рдЕрдкреВрд░реНрдг рд╡рд░реНрдЧ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрдХрд▓рдХ рдЪреЗрддрд╛рд╡рдиреА рдХреЛ рд╕рд╣рдирд╛ рд╣реЛрдЧрд╛ред рд░рдирдЯрд╛рдЗрдо рдореЗрдВ, рдХреЛрдИ рднреА рдЕрдЪреВрдХ рддрд░реАрдХреЗ рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЫрджреНрдо-рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╡рд┐рд╢реЗрд╖ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЛ рдлреЗрдВрдХ рджреЗрдВрдЧреЗ рдЬреЛ рд╕реНрдерд┐рддрд┐ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЬреНрдпрд╛рджрд╛рддрд░ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ, рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реЛрддреА рд╣реИ, рдпрд╛ рдЗрд╕реЗ рдПрдХ рдХрдХреНрд╖рд╛ рдХрд╛рд░рдЦрд╛рдиреЗ рдореЗрдВ рд╕реМрдВрдкрдирд╛ рд╣реЛрддрд╛ рд╣реИред рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╕реАрдзреЗ рдПрдирдПрд╕рдПрд╕рдЯреАрд░рд┐рдВрдЧ рд╡рд░реНрдЧ рдХреЛ рдЖрд╡рдВрдЯрди рдФрд░ рдЗрдирдЖрдИрдЯ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдПрдирдПрд╕рдПрд╕рдЯреАрд░рд┐рдВрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рд╡рд░реНрдЧреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Init рд╕рдВрджреЗрд╢ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡рд╕реНрддреБ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП init рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, NSString рдкрд░ рдЖрд╡рдВрдЯрд┐рдд рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ NSCFString рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдП, рдпрд╣рд╛рдВ рд╡рд░реНрдЧ рдХрд╛рд░рдЦрд╛рдирд╛ NSString рд╣реИред рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╕рд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА init * рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЕрдиреНрдпрдерд╛ рд╡реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдВрдЧреЗ рдЬреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдЕрдореВрд░реНрдд рд╡рд░реНрдЧ рдореЗрдВ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдирд╛, рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╡рд╕реНрддреБ-рд╕реА ++ рдХрдХреНрд╖рд╛рдПрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдФрд░ рдЗрд╕ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдзреВрд▓-рдореБрдХреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрдиреЗ рд╡рд╛рд▓реА рд╣реИ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдЧ, рдЫрджреНрдо рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ init рдХреЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред

рд╣рд╛рд▓рд╛рдБрдХрд┐, C ++ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реБрд░реБрдЪрд┐рдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ред рдмрдбрд╝реА рд╕реА ++ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреА рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрдврд╝рддрд╛ рд╕рдВрдХрд▓рди рд╕рдордпред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЗ рдХреНрд▓рд╛рд╕ рдЗрдВрдЯрд░реНрдирд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЗрд╕реЗ рдЫрд┐рдкрд╛рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рдХреЛ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА / рд╕реА ++ рджреБрд╡рд┐рдзрд╛ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

pimpl


рдкрд┐рдВрдкрд▓ - "рд╕реВрдЪрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" рдпрд╛ "рдирд┐рдЬреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди" рдХреЗ рд▓рд┐рдП рдЫреЛрдЯрд╛ред рдпрд╣ рдореБрд╣рд╛рд╡рд░рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдЦреБрд▓рд╛ рд╡рд┐рд╡рд░рдг рдЦреБрд▓реЗ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ Impl рд╕рдореНрдореЗрд▓рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕рднреА рд╕рджрд╕реНрдп рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реНрд░реЗрдгреА рдХреЗ рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рд╡рд░реНрдЧ рдЪрд░ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреЛ .cpp рдлрд╝рд╛рдЗрд▓ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, .mm) рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрди -рдЗрдирд┐рдЯ *) рдореЗрдВ, рдирдП рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдкрдХреЛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдХ рд╡рд░реНрдЧ рдЪрд░ рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдбрд┐рд▓реАрдЯ рдХреЛ -dealloc рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
 MyClass.h: // ... struct MyClassImpl; @interface MyClass : NSObject { @private struct MyClassImpl* impl; } //   ... - (id)lookup:(int)num; // ... @end MyClass.mm: #import "MyClass.h" #include <map> struct MyClassImpl { std::map<int, id> lookupTable; }; @implementation MyClass - (id)init { self = [super init]; if (self) { impl = new MyClassImpl; } return self; } - (void)dealloc { delete impl; [super dealloc]; } - (id)lookup:(int)num { std::map<int, id>::const_iterator found = impl->lookupTable.find(num); if (found == impl->lookupTable.end()) return nil; return found->second; } // ... @end 

рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рдЕрдЧреНрд░рд┐рдо рдШреЛрд╖рдгрд╛ рдПрдХ рд╡реИрдз рд╕реА рдХреЛрдб рд╣реИ, рднрд▓реЗ рд╣реА рдмрд╛рдж рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдирд┐рд╣рд┐рдд C ++ рдирд┐рд░реНрдорд╛рддрд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореВрд▓ рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдХрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЛрдВ рдореЗрдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИ, рдФрд░ рдирдП / рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реГрдЬрди рдФрд░ рд╡рд┐рд▓реЛрдкрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдЦреБрд▓реЗ рд╡рд░реНрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдореЗрдВ рдХрд┐рддрдиреА рдЕрдзрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реЛрдЧреАред рдЖрдк рдкреНрд░рджрд░реНрд╢рди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐, рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рдЬреЛ рд╕реА ++ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ MyClass рдореЗрдВ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк MyClass рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдЖрдк рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдХреЙрд▓ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ:
 @interface MyClass : NSObject { struct MyClassMap* lookupTable; } - (id)lookup:(int)i; @end and MyClass.mm: #import "MyClass.h" #include <map> struct MyClassMap : std::map<int, id> { }; @implementation MyClass - (id)init { self = [super init]; if (self) lookupTable = new MyClassMap; return self; } - (id)lookup:(int)i { MyClassMap::const_iterator found = lookupTable->find(i); return (found == lookupTable->end()) ? nil : found->second; } - (void)dealloc { delete lookupTable; lookupTable = NULL; [super dealloc]; } @end 

рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рддреА рд╣реИ, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирдП / рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдХрд╛рд░рдг рдпрд╣ рдЕрд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рддрд┐рдмрдВрдз


рд╢реБрджреНрдз C ++ рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкрд░ рдкреНрд░рдореБрдЦ рдШреЛрд╖рдгрд╛ рд╕рд╣реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред C ++ рд▓рд┐рдЯрд░реЗрдЪрд░ рдореЗрдВ, рдЖрдк рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрдпрд░реНрдб_рдкреНрдЯреНрд░ <> рдФрд░ рдСрдЯреЛ_рдкреНрдЯреНрд░ <> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдлрд╛рд░рд┐рд╢реЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ, рдпрд╣ рднреА рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдкреЙрдЗрдВрдЯрд░ рд╕реЗ рд╕рдВрд░рдЪрдирд╛ рддрдХ рдирд╣реАрдВ рдЬрд╛ рдкрд╛рдПрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдВрдж рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╡реНрдпреБрддреНрдкрдиреНрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рддрдХ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдк рд╕рдВрд░рдЪрдирд╛ рдХреА рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдПрдХ рдЕрд░реНрдз-рдмрдВрдж рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ рдЙрди рд╡рдВрд╢рдЬреЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреА, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╕реАрдзреА рдкрд╣реБрдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ Objective-C ++ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЕрдВрдд рдореЗрдВ рд╡рд┐рдЪрд╛рд░


рдлрд┐рд░ рднреА, рдореБрдЭреЗ рд▓рдЧрднрдЧ рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдореЗрдВ C ++ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдореНрдкрд▓ рдореБрд╣рд╛рд╡рд░рд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рд▓рдЧрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рджрд╕реНрдп рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдЕрдкреНрд░рддреНрдпрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рддрд┐рдкреВрд░реНрддрд┐ рдХрд░рддреА рд╣реИред рдкреНрд░рджрд░реНрд╢рди рдЦреЛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕рдВрд░рдЪрдирд╛ рдЦреБрдж рдПрдХ рд╕реВрдЪрдХ рдирд╣реАрдВ рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдЖрдкрдХреЛ C ++ рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдЖрдк рдирд┐рдореНрди рддрд░реАрдХреЗ рд╕реЗ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХ рдУрдкрди рд╕реА ++ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ, рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХреНрд▓рд╛рд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдШреЛрд╖рдгрд╛ рд╕реЗ рдЖрдЧреЗ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╕рджрд╕реНрдпреЛрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рдЗрд╕реА .mm рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВред

Source: https://habr.com/ru/post/In137469/


All Articles