
рдЖрдЬ рд░рд╛рдд, рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдПрдХ рдФрд░ рдХреЛрдб-рд╕рдореАрдХреНрд╖рд╛ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рд╢реБрджреНрдзрддрдо, рдХреНрд░рд┐рд╕реНрдЯрд▓реАрдХреГрдд рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЯреБрдХрдбрд╝рд╛ рднрд░ рдЖрдпрд╛ред рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛, рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рд╕рд╡рд╛рд▓ рддреБрд░рдВрдд рдкреЙрдк рд╣реЛ рдЧрдпрд╛: "рдХреНрдпрд╛ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рдХреЙрдкреА рдкреЗрд╕реНрдЯ рд╣реИрдВ"? Google рдореЗрд░рд╛ рдорд┐рддреНрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рдмрд╣реБрдд рдЬрд▓реНрджреА
jkennedy1980 рджреНрд╡рд╛рд░рд╛ рдкрд╛рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рдиреЗ
CPD (рдХреЙрдкреА рдкреЗрд╕реНрдЯ рдбрд┐рдЯреЗрдХреНрдЯрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдЬреЛ рдХрд┐
PMD рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (рд╕реБрдВрджрд░ рдмрд╣реБрдд рдХреБрдЫ || рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрд╕ рдбрд┐рдЯреЗрдХреНрдЯрд░ || рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд▓рддреА рдбрд┐рдЯреЗрдХреНрдЯрд░ ||
... )ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕реАрдкреАрдбреА рдХрдИ рднрд╛рд╖рд╛рдУрдВ (рд╕реАрдкреАрдкреА, рд╕реАрдПрд╕, рдЬрд╛рд╡рд╛, рдкреАрдПрдЪрдкреА, рд░реВрдмреА, рдПрдХреНрдорд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреЗ рд▓рд┐рдП рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рддреБрд░рдВрдд рдкрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛ рдЬреЛ рдХрд┐ jkennedy1980 рдХреЗ рдкрд╛рд╕ рдерд╛, рдЬреЛ рдЬреЗрдирдХреАрдВрд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рд░реНрдорд╛рдг рдореЗрдВ CPD рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рдерд╛ред рдпрд╣ рдЖрдо рддреМрд░ рдкрд░ рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЬреЗрдирдХрд┐рдВрд╕ рдХреЛ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рдЕрдзрд┐рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ, рдХрдм рдФрд░ рдХреНрдпрд╛ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЬреЗрдирдХрд┐рдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╛ рд╡реЗ рдЬрд╛рдирддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╣реАрдВ рджреВрд░ рд╣реИ, рдпрд╣ рд╡рд┐рдзрд┐ рдЗрд╕реЗ рд╣рд▓реНрдХреЗ рдврдВрдЧ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред IPhone / iOS рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП Xcode рдХрд┐рд╕реА рддрд░рд╣ рдХрд░реАрдм рд╣реИ, рдФрд░ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ
рд▓рд┐рдП рдПрдХ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛ рдЕрднреА рднреА рдЕрд╕рдВрднрд╡ рд╣реИ ,
рдХреБрдЫ рдЧреАрдд
рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рдЖрд░рдХреНрд╖рдг рдХрд░ рджреВрдВрдЧрд╛ рдХрд┐ рд╕реАрдкреАрдбреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдмрд┐рдВрджреБ
jkennedy1980 рдкрд░ рдореВрд▓ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдбреБрдкреНрд▓рд┐рдХреЗрдЯ
рд╣реЛрдВрдЧреЗ ред рдпрд╣реА рд╣реИ, рдЬреЛ рдЬреЗрдирдХреАрдВрд╕ + рд╕реАрдкреАрдбреА рдПрдХреАрдХрд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рдЖрдк рддреБрд░рдВрдд
рдпрд╣рд╛рдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЬреЛ рд▓реЛрдЧ Xcode + cpd рдХреЗ рдПрдХреАрдХрд░рдг рдореЗрдВ рдЕрдзрд┐рдХ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ - рдХреГрдкрдпрд╛ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдмрдиреЗ рд░рд╣реЗрдВред
рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рд╣реИрдВ, рдФрд░ рдЬреЛ рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдЖрдЬрд╝рдорд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
Xcode рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ
рд▓рд┐рдВрдХ , рдЬрд┐рд╕рдореЗрдВ "рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЪреЛрд░реА рд╣реЛ рдЧрдпрд╛ рд╣реИред"
рд╕реАрдкреАрдбреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
рдкреАрдПрдордбреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ рд╕реАрдкреАрдбреА рд╣реИ, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВрдиреЗ
4.6.2 рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ред
ObjectiveC рдЯреЛрдХрди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ
CPD рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдЗрдХ рд╣реЙрд▓ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рд╕рдиреЗ
рдЬрд╛рд╡рд╛рд╕реАрд╕реА рдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡ рд╕реА рд╡реНрдпрд╛рдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд┐рдпрд╛, рдФрд░ рдЕрднреА рднреА
jkennedy1980 , рд╣рдо рдПрдХ рдЕрджреНрднреБрдд рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдЯреЛрдХрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реАрдкреАрдбреА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред рдЗрд╕реЗ
рдЧреАрдереВрдм рд╕реЗ рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
рдФрд░ рдХреБрдЫ рдирд╣реАрдВ
рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рддрд░рд╣ рдХреЗ рдкреАрдбрд╝рд┐рдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд╕реАрдкреАрдбреА рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред
java
-Xmx512m
-classpath pmd-4.2.5.jar:ObjCLanguage-0.0.1-SNAPSHOT.jar
net.sourceforge.pmd.cpd.CPD
--minimum-tokens 100
--files [Path to XCode project classes]
--language ObjectiveC
--encoding UTF-8
--format net.sourceforge.pmd.cpd.XMLRenderer > cpd-output.xml
рдкреИрд░рд╛рдореАрдЯрд░ рд╕реНрд╡рдпрдВ рд╕рд╣рдЬ рд╣реИрдВ, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕рдВрджрд┐рдЧреНрдз рдПрдХрдорд╛рддреНрд░ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ -
рдиреНрдпреВрдирддрдо-рдЯреЛрдХрди ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдпрд╣ рдЯреЛрдХрди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдиреЗ рдкрд░, рдХреЛрдб рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред 1 рдХрд╛ рдорд╛рди рд░рдЦреЗрдВ - рдкреВрд░рд╛ рдХреЛрдб рдПрдХ рд╕реЙрд▓рд┐рдб рдХреЙрдкреА рдкреЗрд╕реНрдЯ рд╣реЛрдЧрд╛; 100500 рдХрд╛ рдореВрд▓реНрдп рдбрд╛рд▓реЗрдВ - рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдПрдХ рднреА рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред
рд╕реНрдЯреИрд▓рд╛ рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХ рд╕реЗ
рд▓рд┐рдП рдЧрдП рдЧреБрдгрд╛рдВрдХреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░, 100 рдХрд╛ рдореВрд▓реНрдп рдЖрдиреБрднрд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред
рдПрдХ рд╕рдлрд▓ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдкреНрд░рдкрддреНрд░ рдХрд╛ cpd-output.xml рдорд┐рд▓рддрд╛ рд╣реИ
<рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд▓рд╛рдЗрдиреЗрдВ = "23" рдЯреЛрдХрди = "110">
<рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди = "20" рдкрде = "/../ CPDObjective-C / CopyPastedFiles / OtherSimpleClass.m" />
<рдлрд╝рд╛рдЗрд▓ рд▓рд╛рдЗрди = "13" рдкрде = "/../ CPDObjective-C / CopyPastedFiles / SimpleClass.m />>
<Codefragment>
<! [CDATA [
- (рд╢реВрдиреНрдп) someMethod {
for (int i = 0; рдореИрдВ <10; i ++) {
for (int j = 0; j <10; j ++) {
NSLog (@ "рдпрд╣ рдЧрд▓рдд рд╣реИ");
NSLog (@ "рдпрд╣ рдЧрд▓рдд рд╣реИ");
NSLog (@ "рдпрд╣ рдЧрд▓рдд рд╣реИ");
NSLog (@ "рдпрд╣ рдЧрд▓рдд рд╣реИ");
...
рдЗрд╕рд╕реЗ, рд╣рдо рдЙрдиреНрд╣реЗрдВ Xcode рдореЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реЗрдВрдЧреЗ
Xcode рдПрдХреАрдХрд░рдг
Xcode рдФрд░ CPD рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдмрд┐рд▓реНрдб рдЪрд░рдгреЛрдВ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░рдг рдЪрд▓рд╛рдПрдБ, рд╕рд╢рд░реНрдд рд░реВрдк рд╕реЗ рдХрдИ рднрд╛рдЧреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░:
- рдЕрд╕рд▓ рдореЗрдВ рд╕реА.рдкреА.рдбреА.
- рдкрд╛рд░реНрд╕рд┐рдВрдЧ cpd-output.xml
- "рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк" рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ
рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж XML рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджреЗ рджреВрдВрдЧрд╛, рдФрд░ рдкрд╣рд▓реЗ рдореИрдВ "рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред "рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк" - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╡рд╣ рдкреНрд░рд╛рд░реВрдк рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд░рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░рдг рдореЗрдВ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ Xcode рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
[full-path-to-file]:[line-number]:[column-number]: warning: [Message]
[full-path-to-file]:[line-number]:[column-number]: error: [Message]
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдХрд╛рдо cpd-output.xml рдХреЛ "рд╕рд╣реА рдлреЙрд░реНрдореЗрдЯ" рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ / рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рдЬреЛ рд╕реНрд░реЛрдд XML рдХреЛ рдкрдврд╝реЗрдЧрд╛, рдФрд░ рд╣рдореЗрдВ рдЬрд┐рди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реЛрдЧреА, рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди, рдлрд┐рд░ рднреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ
рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреЛрд╕реНрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рд╕реНрд░реЛрддреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рд▓реЙрдиреНрдЪ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рдпрд╣рд╛рдБ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдПрдХ рдЬреЛрдбрд╝реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдиреЗрд╡рд┐рдЧреЗрдЯрд░ рдореЗрдВ:

рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрджрд░:

рдкреБрдирд╢реНрдЪ
рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдПрдХ рдмреБрд░рд╛рдИ рд╣реИ рдЬрд┐рд╕реЗ рд▓рдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрднреА-рдХрднреА рдЙрд╕рдХреЗ рд╕рд╛рде рд▓рдбрд╝рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди, рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрднреА рднреА рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдм CPD рдХреЛ Xcode рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рд╣реИред
рдкреАрдПрд╕рдПрд╕
Xcode рдХреЗ рд▓рд┐рдП "рд╕рд╣реА рдкреНрд░рд╛рд░реВрдк" рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд░рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд░рдг рд╕реЗ рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░реЛрдЪрдХ рдЬрд╛рдирдХрд╛рд░реА рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ рдкрд░рд┐рдгрд╛рдо Xcode рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП - рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ
рдЕрдВрддрд┐рдо рд╢рдмреНрдж
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреЛрдб "рд╡рд░реНрд╖ рдХреЗ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдХреЛрдб" рдкреБрд░рд╕реНрдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдирд╛рдорд┐рддреА рдирд╣реАрдВ рд╣реИред рд▓реЗрдЦрдХ рд╣рд░ рд╕реМ рд╕рд╛рд▓ рдореЗрдВ рдПрдХ рдмрд╛рд░ MacOSX рдХреЗ рддрд╣рдд рд▓рд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рдмрд╕ Xcode рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рд▓реЗрдЦрдХ рдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдРрд╕рд╛ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐, рдХреБрдЫ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдмрдЧ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред