{"id":163281,"date":"2012-12-20T12:10:02","date_gmt":"2012-12-20T08:10:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=163281"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=163281","title":{"rendered":"<span class=\"post_title\">iOS Console App \u2014 \u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0434\u043b\u044f iOS \u0431\u0435\u0437 GUI<\/span>"},"content":{"rendered":"<div class=\"content html_format\">   \t\u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f \u0432\u0441\u0435\u043c \u0445\u0430\u0431\u0440\u0430\u0432\u0447\u0430\u043d\u0430\u043c!<\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e, \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 iOS-\u0434\u0435\u0432\u0430\u0439\u0441\u0435. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e jailbreak-\u043d\u0443\u0442\u044b\u0439 \u0434\u0435\u0432\u0430\u0439\u0441, \u0431\u0435\u0437 \u043d\u0435\u0433\u043e, \u0443\u0432\u044b, \u043d\u0438\u043a\u0430\u043a: iOS AppStore (\u043e\u043d \u0436\u0435 iTunesStore) \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/bac\/142\/0f9\/bac1420f93fc8ab906d7fc7c4559adc7.png\"\/><\/p>\n<p>  \u041f\u0438\u0441\u0430\u0442\u044c HelloWorld \u2014 \u0434\u0435\u043b\u043e \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 API.<\/p>\n<p>  \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0438 \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445.<\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u043f\u043e\u0432\u043e\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u044d\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043a\u0430\u043a \u0444\u0430\u043a\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u2014 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 Xcode.<br \/>  <a name=\"habracut\"><\/a><br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/871\/1c7\/a38\/8711c7a38db36e0f92469882c08a2ba8.png\"\/><\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 Xcode: \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u0442\u0435\u043c\u043f\u043b\u0435\u0439\u0442 \u00abEmpty Application\u00bb, \u043f\u0440\u0438\u0434\u0443\u043c\u044b\u0432\u0430\u0435\u043c \u0438\u043c\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435 (\u0432 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 hackup). \u0427\u0442\u043e \u0436, \u0443 \u043d\u0430\u0441 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u0443\u0441\u0442\u043e\u0435 GUI-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043d\u043e \u0432\u0435\u0434\u044c \u043c\u044b \u043d\u0435 \u044d\u0442\u043e\u0433\u043e \u0445\u043e\u0442\u0435\u043b\u0438, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438? \u0421\u043c\u0435\u043b\u043e \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0437 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043b\u0438\u0448\u043d\u0438\u0435 \u0444\u0430\u0439\u043b\u044b!<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/e88\/b87\/691\/e88b87691d07546bd8742dea5676b3fc.png\"\/><\/p>\n<p>  \u0427\u0442\u043e \u0435\u0449\u0451? \u041d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d GUI, \u0442\u0430\u043a \u0447\u0442\u043e \u043b\u0438\u0448\u043d\u0438\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0442\u043e\u0436\u0435 \u0443\u0431\u0438\u0440\u0430\u0435\u043c.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/9e4\/999\/95e\/9e499995eb18df3be6a45ee24d12ac78.png\"\/><\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0438\u0434\u0451\u043c \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u0442\u043e\u0447\u043d\u0435\u0435 \u2014 \u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0440\u0433\u0435\u0442\u0430. \u0422\u0430\u043c \u0443\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u043d\u0438\u0435 \u043a\u043e\u0434\u0430.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/bc6\/cd6\/d53\/bc6cd6d531de67819c94fd1ab0df2560.png\"\/><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435, \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d Info.plist, \u0441\u043c\u0435\u043b\u043e \u0441\u043d\u043e\u0441\u0438\u043c \u0438 \u0435\u0433\u043e \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u043d\u0438\u0435.<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/376\/4d4\/c01\/3764d4c01abb57cf9ffd5dafa1617877.png\"\/><\/p>\n<p>  \u0411\u0430\u043d\u0434\u043b \u043d\u0430\u043c \u0442\u043e\u0436\u0435 \u043d\u0435 \u043d\u0443\u0436\u0435\u043d: \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0443\u0441\u0442\u044c \u0438\u0442\u043e\u0433\u043e\u0432\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0436\u0430\u0442\u044c \u0432 \u0444\u0435\u0439\u043a\u043e\u0432\u043e\u043c \u0431\u0430\u043d\u0434\u043b\u0435 \u0441 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435\u043c &quot;.console&quot;<br \/>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/430\/031\/7aa\/4300317aa4b3e55705517469ea65c23a.png\"\/><\/p>\n<p>  \u0427\u0442\u043e \u0436, \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u043f\u0440\u0430\u0432\u0438\u043c \u043a\u043e\u0434 \u0432 main.m: \u0443\u0431\u0435\u0440\u0451\u043c \u0438\u043c\u043f\u043e\u0440\u0442 <code>UIKit<\/code> \u0438 <code>AppDelegate<\/code>. \u0412 <code>.pch<\/code> \u0442\u043e\u0436\u0435 \u0443\u0431\u0435\u0440\u0451\u043c \u043b\u0438\u0448\u043d\u0435\u0435, \u043e\u0441\u0442\u0430\u0432\u0438\u0432 \u043b\u0438\u0448\u044c <code>Foundation.h<\/code>. \u0418\u0437 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>main()<\/code> \u0442\u0430\u043a \u0436\u0435 \u0443\u0431\u0438\u0440\u0430\u0435\u043c <code>UIApplication<\/code>, \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e return 0.<\/p>\n<p>  \u041d\u0443 \u0432\u043e\u0442, \u043c\u043e\u0436\u0435\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430! \u0414\u0430, \u0432\u0441\u0451 \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u043e \u043a\u0430\u043a \u0436\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u0448\u0443 \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043d\u0438\u0447\u0435\u0433\u043e\u043d\u0435\u0434\u0435\u043b\u0430\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443? \u0412\u0435\u0434\u044c \u0432 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043d\u0435\u0442? \u0414\u0430 \u0432\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e: \u044d\u0442\u043e \u0436\u0435 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0430 \u043d\u0435 \u044d\u043c\u0443\u043b\u044f\u0442\u043e\u0440, \u0442\u0430\u043a \u0447\u0442\u043e \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0441\u0443\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u0430\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0434\u043b\u044f \u043c\u0430\u043a\u043e\u0441\u0438. \u041d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u0435\u0451 \u0434\u0430\u0436\u0435 \u0438\u0437 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u2014 \u0448\u0442\u0443\u043a\u0430 \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0430\u044f, \u0432\u0435\u0434\u044c \u043e\u043d\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430!<\/p>\n<p>  \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c \u0442\u0435\u043e\u0440\u0438\u044e. \u0412\u0441\u0435 \u043b\u0438\u0431\u044b \u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0438 \u0438\u0449\u0443\u0442\u0441\u044f \u0438 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439 dyld, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043e\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u043b\u0430\u0433\u0438, \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f <a href=\"http:\/\/developer.apple.com\/library\/mac\/#documentation\/Darwin\/Reference\/Manpages\/man1\/dyld.1.html\">\u0432 \u043c\u0430\u043d\u0435<\/a>. \u041d\u0430\u0441 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u0435\u0442 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <b><code>DYLD_ROOT_PATH<\/code><\/b>, \u0442\u043e \u0435\u0441\u0442\u044c, \u043f\u0443\u0442\u044c, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 dyld \u00ab\u043f\u0440\u0438\u0434\u0435\u043b\u044b\u0432\u0430\u0435\u0442\u00bb \u0432\u0441\u0435 \u043f\u0443\u0442\u0438 \u043a \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u043c \u0438 \u043b\u0438\u0431\u0430\u043c \u0432 \u0444\u0430\u0439\u043b\u0435.<\/p>\n<p>  \u041d\u0443 \u0447\u0442\u043e \u0436, \u0437\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0435 \u0432 \u043f\u0430\u043f\u043a\u0443 \u0441 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0439 \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043e\u0439. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u00abShow In Finder\u00bb \u0434\u043b\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u0442\u0430\u0440\u0433\u0435\u0442\u0430.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/a5b\/a2e\/a1d\/a5ba2ea1d2eb7cc6de2da267a2e9f3f7.png\"\/><br \/>  \u0417\u0430\u0442\u0435\u043c \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c <code>hackup.console<\/code> \u0432 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b \u0441 \u043d\u0430\u0431\u0440\u0430\u043d\u043d\u044b\u043c \u0437\u0430\u0440\u0430\u043d\u0435\u0435 <code>cd<\/code>.<\/p>\n<pre><code class=\"bash\">$ pwd \/Users\/silvansky\/Library\/Developer\/Xcode\/DerivedData\/hackup-cbpgmjwwgsfnqlgjnrlcnbjcxnmu\/Build\/Products\/Debug-iphonesimulator\/hackup.console $ .\/hackupdyld: Symbol not found: _OBJC_CLASS_$_NSString   Referenced from: \/Users\/silvansky\/Library\/Developer\/Xcode\/DerivedData\/hackup-cbpgmjwwgsfnqlgjnrlcnbjcxnmu\/Build\/Products\/Debug-iphonesimulator\/hackup.console\/.\/hackup   Expected in: \/System\/Library\/Frameworks\/Foundation.framework\/Versions\/C\/Foundation  in \/Users\/silvansky\/Library\/Developer\/Xcode\/DerivedData\/hackup-cbpgmjwwgsfnqlgjnrlcnbjcxnmu\/Build\/Products\/Debug-iphonesimulator\/hackup.console\/.\/hackup [1]    61835 trace trap  .\/hackup $ otool -L hackup hackup:      \/System\/Library\/Frameworks\/Foundation.framework\/Foundation (compatibility version 300.0.0, current version 992.0.0)      \/usr\/lib\/libobjc.A.dylib (compatibility version 1.0.0, current version 227.0.0)      \/usr\/lib\/libc++.1.dylib (compatibility version 1.0.0, current version 65.0.0)      \/usr\/lib\/libSystem.dylib (compatibility version 1.0.0, current version 125.0.0) <\/code><\/pre>\n<p>  \u041c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0438\u0449\u0435\u0442 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a <code>Foundation<\/code> \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043e\u043d \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0441\u044f \u043e\u043d \u043d\u0443\u0436\u043d\u043e\u0433\u043e \u043d\u0430\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u043e\u0433\u043e \u0434\u043b\u044f \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0430.<\/p>\n<p>  \u041b\u0435\u0447\u0438\u043c: \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u043d\u0430\u0448 iOS SDK \u0432 \u0431\u0430\u043d\u0434\u043b\u0435 Xcode.app, \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c:<\/p>\n<pre><code class=\"bash\">$ DYLD_ROOT_PATH=&quot;\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneSimulator.platform\/Developer\/SDKs\/iPhoneSimulator6.0.sdk&quot; .\/hackup <\/code><\/pre>\n<p>  \u041e\u0448\u0438\u0431\u043e\u043a \u043d\u0435\u0442! \u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0430\u0441\u044c, \u043d\u043e \u043f\u043e \u043f\u0440\u0435\u0436\u043d\u0435\u043c\u0443 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0434\u0435\u043b\u0430\u0435\u0442. \u0418\u0441\u043f\u0440\u0430\u0432\u0438\u043c \u044d\u0442\u043e!<\/p>\n<p>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u043f\u0438\u0448\u0435\u043c \u043f\u0440\u043e\u0441\u0442\u0435\u043d\u044c\u043a\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0434\u043b\u044f \u0432\u044b\u0432\u043e\u0434\u0430 \u0447\u0435\u0433\u043e-\u043b\u0438\u0431\u043e \u0432 <code>stdout<\/code>, \u0437\u0430\u043c\u0435\u043d\u0443 <code>NSLog<\/code>. \u042f \u043d\u0430\u0437\u0432\u0430\u043b \u0441\u0432\u043e\u044e <code>NSPrintf<\/code>, \u0432\u043e\u0442 \u0435\u0451 \u043a\u043e\u0434:<\/p>\n<pre><code class=\"objectivec\">void NSPrintf(NSString *format, ...) {      va_list args;      va_start(args, format);      NSString *message = [[[NSString alloc] initWithFormat:format arguments:args] autorelease];      va_end(args);      std::cout &lt;&lt; [message cStringUsingEncoding:NSUTF8StringEncoding]; } <\/code><\/pre>\n<p>  \u0412\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u043c\u0435\u0442\u0438\u0442, \u0447\u0442\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u044b\u0432\u043e\u0434 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>std::cout<\/code>, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c <code>main.m<\/code> \u0432 <code>main.mm<\/code> \u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c <code>iostream<\/code>.<\/p>\n<p>  \u0427\u0442\u043e \u0436, \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u044b \u0443\u043c\u0435\u0435\u043c \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c, \u043d\u043e \u0447\u0442\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c?<\/p>\n<p>  \u0417\u0434\u0435\u0441\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u0441\u0430\u043c\u043e\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c. \u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0435 API \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0442 \u043d\u0430\u043c \u044d\u0442\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c. \u0410 \u043a\u0430\u043a \u043d\u0430\u0441\u0447\u0451\u0442 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445? \u0410 \u0433\u0434\u0435 \u0438\u0445 \u0432\u0437\u044f\u0442\u044c? \u0410 \u043a\u0430\u043a \u0436\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438?<\/p>\n<p>  \u041e\u0445, \u0441\u043b\u043e\u0436\u043d\u044b\u0435 \u044d\u0442\u043e \u0432\u043e\u043f\u0440\u043e\u0441\u044b. \u0414\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043a \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c API, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0435\u0442. \u0425\u043e\u0442\u044c \u043a\u0430\u043a\u043e\u0433\u043e-\u0442\u043e \u0440\u0430\u0437\u0443\u043c\u043d\u043e\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u2014 \u0442\u043e\u0436\u0435. \u041d\u043e \u0437\u0430\u0442\u043e \u0432 \u043d\u0430\u0448\u0435\u043c \u0440\u0430\u0441\u043f\u043e\u0440\u044f\u0436\u0435\u043d\u0438\u0438 \u0435\u0441\u0442\u044c \u0437\u0430\u043c\u0435\u0447\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0448\u0442\u0443\u043a\u0430 \u2014 \u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u043d\u0433! \u0421 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u044e\u0449\u0438\u0435 \u0445\u0435\u0434\u0435\u0440\u044b \u0434\u043b\u044f \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0445 \u0438 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432. \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0435\u0441\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u043f\u043e\u0437\u043d\u0430\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/nst\/iOS-Runtime-Headers\">iOS-Runtime-Headers<\/a> (\u0438 \u0435\u0441\u0442\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044d\u0442\u0438 \u0445\u0435\u0434\u0435\u0440\u044b \u0438 \u0431\u044b\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u044b: <a href=\"https:\/\/github.com\/nst\/RuntimeBrowser\">RuntimeBrowser<\/a>, \u0441\u043f\u0430\u0441\u0438\u0431\u043e \u0434\u043e\u0431\u0440\u043e\u043c\u0443 \u0447\u0435\u043b\u043e\u0432\u0435\u043a\u0443 <b>Nicolas Seriot<\/b>). \u041d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0447\u0438\u0442\u0430\u0435\u043c \u0445\u0435\u0434\u0435\u0440\u044b \u0438 \u043f\u043e\u0438\u0449\u0435\u043c \u0432 \u043d\u0438\u0445 \u0447\u0442\u043e-\u043b\u0438\u0431\u043e, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u043e\u0435 \u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u043c\u0438. \u0420\u0430\u043d\u043e \u0438\u043b\u0438 \u043f\u043e\u0437\u0434\u043d\u043e, \u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0451\u043c\u0441\u044f \u043c\u044b \u043d\u0430 \u043c\u0435\u0442\u043e\u0434 <code>- (id)applications<\/code> \u0443 \u043a\u043b\u0430\u0441\u0441\u0430 <code>ISSoftwareMap<\/code>, \u0432\u043a\u043b\u044e\u0447\u0451\u043d\u043d\u043e\u0433\u043e \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a <code>iTunesStore<\/code>. \u0427\u0442\u043e \u0436, \u0437\u0430\u0434\u0430\u0434\u0438\u043c\u0441\u044f \u0446\u0435\u043b\u044c\u044e \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u043c\u0435\u0442\u043e\u0434 \u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u0430\u0442\u044c \u0447\u0442\u043e \u0431\u044b \u043e\u043d \u043d\u0430\u043c \u043d\u0438 \u0432\u0435\u0440\u043d\u0443\u043b!<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/552\/40f\/958\/55240f9581db2e8e980d484fce1b58c5.png\"\/><br \/>  \u0417\u0430\u043c\u0435\u0442\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a \u0432\u0437\u044f\u0442\u044c \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0443. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043d\u0430 \u043b\u0435\u0442\u0443, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043b\u0430\u0441\u0441\u0430 <code>NSBundle<\/code>. \u041d\u0430\u043f\u0438\u0448\u0435\u043c \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u0443\u0434\u0435\u0442 \u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a:<\/p>\n<pre><code class=\"objectivec\">BOOL loadPrivateFramework(NSString *framework) {      NSString *path = [NSString stringWithFormat:@&quot;\/System\/Library\/PrivateFrameworks\/%@.framework&quot;, framework];      NSBundle *b = [NSBundle bundleWithPath:path];      BOOL success = [[[b retain] autorelease] load];      if (!success)      {           NSPrintf(@&quot;Failed to load private framework %@!\\n&quot;, framework);      }      return success; } <\/code><\/pre>\n<p>  \u0415\u0441\u043b\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0430 <code>YES<\/code>, \u0442\u043e \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u043c, \u0430 \u0442\u043e\u0447\u043d\u0435\u0435, \u043d\u0430\u043c \u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u043a\u043b\u0430\u0441\u0441\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u043d\u0451\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043c \u043d\u0430\u0434\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043b\u0430\u0441\u0441 <code>ISSoftwareMap<\/code>, \u0447\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u0430\u043a\u0438\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c:<\/p>\n<pre><code class=\"objectivec\">Class ISSoftwareMap = NSClassFromString(@&quot;ISSoftwareMap&quot;); <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u043c\u044b \u0443\u0436\u0435 \u043f\u043e\u043d\u044f\u043b\u0438 \u0438\u0437 \u0445\u0435\u0434\u0435\u0440\u043e\u0432, \u043d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u0437\u0432\u0430\u0442\u044c <code>+ (id)currentMap<\/code> \u0438\u043b\u0438 <code>+ (id)loadedMap<\/code> \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440\u0430 \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n<pre><code class=\"objectivec\">id isSoftwareMap = [ISSoftwareMap performSelector:@selector(currentMap)]; if (!isSoftwareMap) {      isSoftwareMap = [ISSoftwareMap performSelector:@selector(loadedMap)]; } <\/code><\/pre>\n<p>  \u041d\u0443 \u0432\u043e\u0442 \u043c\u044b \u0438 \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430\u043c\u0438! \u041c\u043e\u0438 \u043f\u043e\u0437\u0434\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f! =)<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c:<\/p>\n<pre><code class=\"objectivec\">id *applications = [isSoftwareMap performSelector:@selector(applications)]; NSPrintf(@&quot;applications:\\n%@\\n&quot;, applications); <\/code><\/pre>\n<p>  \u0418\u0442\u0430\u043a, \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \u043d\u0430\u0448\u0443 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0443 \u0432 \u0441\u0438\u043c\u0443\u043b\u044f\u0442\u043e\u0440\u0435! \u0427\u0442\u043e-\u0442\u043e? \u041d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041d\u0443 \u0434\u0430, \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0443 \u043d\u0430\u0441 \u0432\u0435\u0434\u044c \u043f\u0443\u0442\u0438 \u0434\u043b\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u043e\u0432 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u044b\u0435 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b. \u0422\u0430\u043a \u0447\u0442\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u043b\u0443\u0447\u0448\u0435 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043c \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435. \u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e iPad \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<p>  \u0427\u0442\u043e-\u0447\u0442\u043e? \u041d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f? \u0420\u0443\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u043e\u0441\u0442\u044c? \u041d\u0443 \u0434\u0430, \u044f \u0432\u0435\u0434\u044c \u0437\u0430\u0431\u044b\u043b \u0441\u043a\u0430\u0437\u0430\u0442\u044c: iOS SDK \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u0434\u043b\u044f \u0434\u0435\u0432\u0430\u0439\u0441\u0430 \u0431\u0435\u0437 \u043f\u043e\u0434\u043f\u0438\u0441\u0438. \u041d\u043e \u0432\u0435\u0434\u044c \u043c\u044b \u0442\u0432\u0451\u0440\u0434\u043e \u0440\u0435\u0448\u0438\u043b\u0438 \u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0441\u0432\u043e\u0435\u0433\u043e! \u0411\u0443\u0434\u0435\u043c \u043f\u0440\u0430\u0432\u0438\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 SDK. \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0444\u0430\u0439\u043b\u0438\u043a <code>SDKSettings.plist<\/code> \u0432 <code>\/Applications\/Xcode.app\/Contents\/Developer\/Platforms\/iPhoneOS.platform\/Developer\/SDKs\/iPhoneOS6.0.sdk\/<\/code> \u0438 \u043f\u0440\u0430\u0432\u0438\u043c \u0435\u0433\u043e. \u0427\u0442\u043e, \u043d\u0435 \u0432\u044b\u0448\u043b\u043e? \u0412\u044b \u043d\u0435 \u0432\u043b\u0430\u0434\u0435\u043b\u0435\u0446 \u0444\u0430\u0439\u043b\u0430? \u041d\u0443 \u0434\u0430, \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u0438 \u0432\u0441\u0451 \u0442\u0430\u043a\u043e\u0435\u2026 \u041d\u043e \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c sudo:<\/p>\n<pre><code class=\"bash\">$ sudo plutil -convert xml1 SDKSettings.plist $ sudo nano SDKSettings.plist $ sudo plutil -convert binary1 SDKSettings.plist <\/code><\/pre>\n<p>  \u0412\u043c\u0435\u0441\u0442\u043e nano, \u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c vim\/mcedit\/emacs \u0438 \u0434\u0430\u0436\u0435 Sublime Text 2. \u0412 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0435 \u043d\u0430\u0434\u043e \u043d\u0430\u0439\u0442\u0438 \u0432 XML-\u043a\u0435 \u0442\u0435\u0433 <code>CODE_SIGNING_REQUIRED<\/code> \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0432 NO.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/3f5\/47a\/6bf\/3f547a6bf1bf86fa4bffe72f8f1d126c.png\"\/><br \/>  \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c Xcode \u0438 \u0440\u0430\u0437\u0443\u0435\u043c\u0441\u044f \u2014 \u043d\u0430\u0448\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0435\u043d\u0430! \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f. \u041d\u0435 \u0442\u0435\u0440\u043f\u0438\u0442\u0441\u044f \u0443\u0436\u0435 \u0437\u0430\u043a\u0438\u043d\u0443\u0442\u044c \u0435\u0433\u043e \u043d\u0430 \u0434\u0435\u0432\u0430\u0439\u0441! \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f OpenSSH (\u0441\u0442\u0430\u0432\u0438\u043c \u0447\u0435\u0440\u0435\u0437 Cydia):<\/p>\n<pre><code class=\"bash\">$ pwd \/Users\/silvansky\/Library\/Developer\/Xcode\/DerivedData\/hackup-cbpgmjwwgsfnqlgjnrlcnbjcxnmu\/Build\/Products\/Debug-iphoneos\/hackup.console $ scp hackup root@192.168.2.2:\/private\/var\/mobile\/Documents\/ root@192.168.2.2's password: hackup                                                                                                                                                                    100%   26KB  26.3KB\/s   00:00 $ ssh mobile@192.168.2.2                                    mobile@192.168.2.2's password: iSilvansky:~ mobile$ ~\/Documents\/hackup (     &quot;&lt;ISSoftwareApplication: 0x18b4e0&gt;: (ru.mail.agent, 335315530:11499676)&quot;,     &quot;&lt;ISSoftwareApplication: 0x18d010&gt;: (com.getdropbox.Dropbox, 327630330:11201748)&quot;,     # ... some more ...     &quot;&lt;ISSoftwareApplication: 0x1936f0&gt;: (8HLDK844H7.net.litchie.idos, 377135644:2716751)&quot; ) <\/code><\/pre>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u0432\u0438\u0434\u0438\u043c, \u0447\u0442\u043e \u043c\u0435\u0442\u043e\u0434 <code>- (id)applications<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043d\u0430\u043c <code>NSArray<\/code>, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u0442\u0438\u043f\u0430 <code>ISSoftwareApplication<\/code>. \u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430 \u0442\u0430\u043a \u0436\u0435 \u043d\u0430\u0445\u043e\u0434\u0438\u043c \u0432 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0445 \u0445\u0435\u0434\u0435\u0440\u0430\u0445 \u0442\u043e\u0433\u043e \u0436\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430. \u0427\u0442\u043e \u0436, \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438, \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0436\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u043d\u0438\u0445 \u043f\u043e\u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u0435\u0435:<\/p>\n<pre><code class=\"objectivec\">NSArray *applications = [isSoftwareMap performSelector:@selector(applications)]; if (applications) {      for (id app in applications)      {           NSPrintf(@&quot; *** Info for application %@\\n&quot;, app);           LOG_SELECTOR(app, bundleIdentifier)           LOG_SELECTOR(app, bundleShortVersionString)           LOG_SELECTOR(app, bundleVersion)           LOG_SELECTOR(app, accountDSID)           LOG_SELECTOR(app, accountIdentifier)           LOG_SELECTOR(app, softwareType)           LOG_SELECTOR(app, versionIdentifier)           LOG_SELECTOR(app, itemIdentifier)           LOG_SELECTOR(app, containerPath)           LOG_SELECTOR(app, storeFrontIdentifier)           LOG_SELECTOR(app, description)      } } <\/code><\/pre>\n<p>  \u041c\u0430\u043a\u0440\u043e\u0441 <code>LOG_SELECTOR<\/code> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d \u0442\u0430\u043a:<\/p>\n<pre><code class=\"objectivec\">#define LOG_SELECTOR(obj, sel)\\ if ([obj respondsToSelector:@selector(sel)])\\ {\\      NSPrintf(@&quot; &quot;#sel&quot;: %@\\n&quot;, [obj performSelector:@selector(sel)]);\\ } <\/code><\/pre>\n<p>  \u041e\u043d \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0432\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438. \u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c!<\/p>\n<pre><code class=\"bash\">iSilvansky:~ mobile$ ~\/Documents\/hackup *** Info for application &lt;ISSoftwareApplication: 0x16d5d0&gt;: (ru.mail.agent, 335315530:11499676)  bundleIdentifier: ru.mail.agent  bundleShortVersionString: 4.0  bundleVersion: 3815  accountDSID: 407343733  accountIdentifier: habrahabr.ru\/users\/silvansky\/  softwareType: (null)  versionIdentifier: 11499676  itemIdentifier: 335315530  containerPath: \/private\/var\/mobile\/Applications\/374BF6DB-8773-4063-9D84-F5858DE7AEBE  storeFrontIdentifier: 143441  description: &lt;ISSoftwareApplication: 0x16d5d0&gt;: (ru.mail.agent, 335315530:11499676)  *** Info for application &lt;ISSoftwareApplication: 0x16f100&gt;: (com.getdropbox.Dropbox, 327630330:11201748)  bundleIdentifier: com.getdropbox.Dropbox  # ... many more ... <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043d\u0430\u043c \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0432\u044b\u0432\u043e\u0434\u0438\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e bundle id, \u0442\u0430\u043a \u0447\u0442\u043e \u0443\u0431\u0435\u0440\u0451\u043c \u0432\u0435\u0441\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u0432\u044b\u0432\u043e\u0434 (\u0438\u043b\u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043c \u0434\u043e \u043b\u0443\u0447\u0448\u0438\u0445 \u0432\u0440\u0435\u043c\u0451\u043d).<\/p>\n<p>  \u0422\u0435\u043f\u0435\u0440\u044c \u0432\u044b\u0432\u043e\u0434 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u043b\u0441\u044f:<\/p>\n<pre><code class=\"bash\">iSilvansky:~ mobile$ ~\/Documents\/hackup ru.mail.agent com.getdropbox.Dropbox # ... more and more ... 8HLDK844H7.net.litchie.idos iSilvansky:~ mobile$ exit logout Connection to 192.168.2.2 closed. <\/code><\/pre>\n<p>  \u041c\u043e\u0436\u0435\u043c \u0442\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e\u0442 \u0432\u044b\u0432\u043e\u0434 \u0433\u0440\u0435\u043f\u0430\u0442\u044c, \u043c\u043e\u0436\u0435\u043c \u0441\u043b\u0430\u0442\u044c \u0441\u0435\u0431\u0435 \u043d\u0430 \u043c\u044b\u043b\u043e, \u043c\u043e\u0436\u0435\u043c\u2026 \u0414\u0430 \u0432\u0441\u0451 \u0447\u0442\u043e \u0437\u0430\u0445\u043e\u0442\u0438\u043c \u043c\u044b \u043c\u043e\u0436\u0435\u043c! \u041d\u043e \u0433\u043b\u0430\u0432\u043d\u043e\u0435: \u043c\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043c\u0435\u0435\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u043c\u0438 API \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0434\u043b\u044f iOS. \u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0438 \u0432\u044b\u043b\u043e\u0436\u0438\u0442\u044c \u0432 Cydia.<\/p>\n<p>  \u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043e\u043b\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u0434\u043b\u044f Xcode \u043c\u043e\u0436\u043d\u043e, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e, \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/github.com\/silvansky\/hackup\">\u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/a>.<\/p>\n<p>  \u0427\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u0448\u0435 (\u0440\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u0441 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u043c \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435\u043c \u0432 \u0441\u0442\u0430\u0442\u044c\u044f\u0445):  <\/p>\n<ul>\n<li>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0442\u0432\u0438\u043a\u0430 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 Theos<\/li>\n<li>\u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u0432 Cydia<\/li>\n<li>\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u0434\u043b\u044f Cydia<\/li>\n<li>\u0442\u0435\u043e\u0440\u0438\u044f \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0437\u043b\u043e\u0432\u0440\u0435\u0434\u043e\u0432 \u0434\u043b\u044f iOS (\u043f\u0440\u043e\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u0435 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u0441 \u0442\u043e\u0440\u0440\u0435\u043d\u0442\u043e\u0432\/installous .ipa \u0444\u0430\u0439\u043b)<\/li>\n<li>\u0440\u0435\u0432\u0435\u0440\u0441-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u043d\u0433 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f iOS \u0438 OS X<\/li>\n<\/ul>\n<div class=\"clear\"><\/div>\n<\/p><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/163281\/\"> http:\/\/habrahabr.ru\/post\/163281\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div class=\"content html_format\">   \t\u0414\u043e\u0431\u0440\u043e\u0433\u043e \u0434\u043d\u044f \u0432\u0441\u0435\u043c \u0445\u0430\u0431\u0440\u0430\u0432\u0447\u0430\u043d\u0430\u043c!<\/p>\n<p>  \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u0432\u0430\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043b\u0435\u0433\u043a\u043e, \u0431\u044b\u0441\u0442\u0440\u043e \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u0443\u044e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0443 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u0430 iOS-\u0434\u0435\u0432\u0430\u0439\u0441\u0435. \u0420\u0430\u0437\u0443\u043c\u0435\u0435\u0442\u0441\u044f, \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e jailbreak-\u043d\u0443\u0442\u044b\u0439 \u0434\u0435\u0432\u0430\u0439\u0441, \u0431\u0435\u0437 \u043d\u0435\u0433\u043e, \u0443\u0432\u044b, \u043d\u0438\u043a\u0430\u043a: iOS AppStore (\u043e\u043d \u0436\u0435 iTunesStore) \u043d\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u0443\u0442\u0438\u043b\u0438\u0442\u044b.<\/p>\n<p>  <img decoding=\"async\" src=\"http:\/\/habrastorage.org\/storage2\/bac\/142\/0f9\/bac1420f93fc8ab906d7fc7c4559adc7.png\"\/><\/p>\n<p>  \u041f\u0438\u0441\u0430\u0442\u044c HelloWorld \u2014 \u0434\u0435\u043b\u043e \u043d\u0435 \u043e\u0441\u043e\u0431\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u0443\u044e \u0443\u0442\u0438\u043b\u0438\u0442\u0443, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0443\u044e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u0438\u0441\u0442\u0435\u043c\u0435, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0435 API.<\/p>\n<p>  \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e\u0431 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0430\u0445 \u0438 \u0438\u0445 \u0432\u0435\u0440\u0441\u0438\u044f\u0445.<\/p>\n<p>  \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u043c\u043e\u0436\u043d\u043e \u0435\u0449\u0451 \u043f\u043e\u0432\u043e\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0430\u0440\u043e\u043b\u0438 \u0438 \u043f\u0440\u043e\u0447\u0438\u0435 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435, \u043d\u043e \u044d\u0442\u043e \u043e\u0441\u0442\u0430\u0432\u043b\u044e \u043a\u0430\u043a \u0444\u0430\u043a\u0443\u043b\u044c\u0442\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0437\u0430\u0434\u0430\u043d\u0438\u0435.<\/p>\n<p>  \u0418\u0442\u0430\u043a, \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u2014 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043a\u0438 \u043f\u0440\u044f\u043c\u043e \u0432 Xcode.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-163281","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/163281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=163281"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/163281\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=163281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=163281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=163281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}