{"id":280542,"date":"2016-11-07T14:10:10","date_gmt":"2016-11-07T11:10:10","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=280542"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=280542","title":{"rendered":"27 open-source \u043d\u0438\u0448\u0442\u044f\u0447\u043a\u043e\u0432 \u0434\u043b\u044f iOS \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430"},"content":{"rendered":"<p>\u0412 <a href=\"https:\/\/www.edsd.ru\/ru\/proekty\/portfolio\">\u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 EDISON Software<\/a> \u0435\u0441\u0442\u044c 8 \u043f\u0440\u043e\u0435\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 <a href=\"https:\/\/www.edsd.ru\/mobilnye-prilozheniya-dlya-dostupa-k-korporativnoj-infrastrukture\">\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0434 Android<\/a> \u0438 4 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0434 iOS:  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.edsd.ru\/servis-dostavki-bankovskih-uvedomlenij-na-smartfony\">\u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b<\/a><\/li>\n<li> <a href=\"https:\/\/www.edsd.ru\/prilozhenie-vivaldi-dlya-raboty-s-ehlektronnoj-bibliotekoj\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Vivaldi \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439<\/a><\/li>\n<li> <a href=\"https:\/\/www.edsd.ru\/virusnaya-rassylka-informacii\">\u0412\u0438\u0440\u0443\u0441\u043d\u0430\u044f \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/a><\/li>\n<li> <a href=\"https:\/\/www.edsd.ru\/mobilnye-prilozheniya-dlya-dostupa-k-korporativnoj-infrastrukture\">\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435<\/a><\/li>\n<\/ul>\n<p>  \u0425\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u043e\u0439 open-source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f iOS \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<h2>1. DZNEmptyDataSet<\/h2>\n<p>  \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432 iOS, \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0435, \u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043e\u043f\u044b\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. <\/p>\n<p>  \u0421 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c \u0438 iOS \u0441\u0430\u043c\u0430 \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043e\u0441\u043e\u0431\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c, \u0432 \u0432\u0438\u0434\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u0434 iOS. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/151\/e44\/539\/151e4453990593ac83f9b7944544d8cd.png\" alt=\"image\"\/><\/p>\n<p>  <a href=\"https:\/\/github.com\/dzenbot\/DZNEmptyDataSet\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a00\/947\/56e\/a0094756e9e04d3b8d64032d15249c7d.jpg\"\/><\/a><br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h2>2. PDTSimpleCalendar<\/h2>\n<p>  <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/386\/f05\/c92\/386f05c92239d57c1fde56f62b724246.png\" alt=\"image\" \/><\/div>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f? \u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c PDTSimpleCalendar, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043b\u0443\u0447\u0448\u0438\u043c \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0434\u043b\u044f \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044f \u0432 iOS. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u043a \u0435\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0432\u0438\u0434, \u0442\u0430\u043a \u0438 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.<\/p>\n<p>  <a href=\"https:\/\/github.com\/jivesoftware\/PDTSimpleCalendar\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/357\/d88\/cb9\/357d88cb9400451c8a99d07b933b6180.jpg\"\/><\/a><\/p>\n<h2>3. MagicalRecord<\/h2>\n<p>  \u041e\u043d\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438, \u0447\u0442\u043e Core Data \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e. \u041e\u043d\u0438 \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u043e. \u0414\u0430 \u043d\u0443, \u0440\u0435\u0430\u043b\u044c\u043d\u043e, Apple? \u0422\u043e\u043d\u043d\u044b \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u043e\u0433\u043e \u0432 \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u043d\u0435 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u0438 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u044b\u043c. \u041d\u0435 \u0433\u043e\u0432\u043e\u0440\u044f \u0443\u0436\u0435 \u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438, \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u043c\u043d\u043e\u0433\u0438\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0435 \u0441\u0442\u0435\u043a\u0438 Core Data \u0434\u043b\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0441\u0440\u0435\u0434 \u0438 \u0442.\u0434. \u0438 \u0442.\u043f. \u041a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u044f \u043b\u044e\u0431\u043b\u044e Core Data, \u043d\u043e Apple \u043c\u043e\u0433\u043b\u0430 \u0431\u044b <i>\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e<\/i> \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 MagicalRecord. <\/p>\n<p>  MagicalRecord \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u043e\u0439 \u0434\u043b\u044f Core Data, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043e\u0442 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 \u043d\u0435\u043d\u0443\u0436\u043d\u044b\u0439 \u0445\u043b\u0430\u043c. \u0415\u0441\u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0440\u0430\u0431\u043e\u0442\u0430\u043b\u0438 \u0441 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u043d\u044b\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438 \u0437\u0430\u043f\u0438\u0441\u0438 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Ruby on Rails), \u0442\u043e \u0432\u044b \u043f\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u0435\u0442\u0435 \u0441\u0435\u0431\u044f \u043a\u0430\u043a \u0434\u043e\u043c\u0430. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0435\u0441\u043b\u0438 \u0432\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 Core Data \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438.<\/p>\n<p>  <a href=\"https:\/\/github.com\/magicalpanda\/MagicalRecord\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/407\/58f\/405\/40758f40540744edbe18a2ed5370f308.jpg\"\/><br \/>  <\/a>  <\/p>\n<h2>4. Chameleon<\/h2>\n<p>  \u0415\u0441\u043b\u0438 \u0432\u044b \u0447\u0438\u0442\u0430\u0435\u0442\u0435 \u044d\u0442\u0443 \u0441\u0442\u0430\u0442\u044c\u044e, \u0442\u043e, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u0432\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442, \u043d\u0435\u0436\u0435\u043b\u0438 \u0434\u0438\u0437\u0430\u0439\u043d\u0435\u0440. \u0422\u043e\u0433\u0434\u0430 \u044d\u0442\u043e \u0434\u043b\u044f \u0432\u0430\u0441. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/6c9\/bd1\/8da\/6c9bd18dae400e9413185decc3d147ab.png\" alt=\"image\"\/><\/p>\n<p>  Chameleon \u2014 \u044d\u0442\u043e \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0441 \u0446\u0432\u0435\u0442\u043e\u0432\u043e\u0439 \u043f\u0430\u043b\u0438\u0442\u0440\u043e\u0439 \u0434\u043b\u044f iOS. \u041e\u043d \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 UIColor \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u043c\u0438, \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u043e\u0432\u044b\u043c\u0438 \u0446\u0432\u0435\u0442\u0430\u043c\u0438. \u041e\u043d \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u0430\u043b\u0438\u0442\u0440\u044b \u0446\u0432\u0435\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0441\u0430\u043c\u0438. \u041e\u043d \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u044c\u0442\u0435\u0441\u044c \u0441 \u043d\u0438\u043c\u0438 \u0432 README. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432 \u0432\u0430\u0448 \u043f\u0440\u043e\u0435\u043a\u0442.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/972\/a5b\/374\/972a5b37491ab3b6a03eaa8d2827cd6d.png\" alt=\"image\"\/><\/p>\n<p>  <a href=\"https:\/\/github.com\/ViccAlexander\/Chameleon\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d31\/82c\/c81\/d3182cc8172f4cf7a65e37d4965cd240.jpg\"\/><br \/>  <\/a>  <\/p>\n<h2>5. Alamofire<\/h2>\n<p>  Alamofire \u2014 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u0430\u044f \u0441\u0435\u0442\u0435\u0432\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043d\u0430\u044f \u043d\u0430 Swift. \u0412\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 AFNetworking? Alamofire \u0435\u0433\u043e \u043c\u043b\u0430\u0434\u0448\u0438\u0439 \u0431\u0440\u0430\u0442. \u0411\u043e\u043b\u0435\u0435 \u043c\u043e\u043b\u043e\u0434\u043e\u0439 \u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0442\u0438\u043b\u044c\u043d\u044b\u0439, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435 (AFNetworking \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 Objective-C). <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/188\/a99\/344\/188a99344ec9f364bb5d6582b234f52a.png\" alt=\"image\"\/><\/p>\n<p>  \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u043b\u0438\u0431\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435, \u043a\u0430\u043a \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0435, \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 JSON \u0438 \u0442.\u0434.? Alamofire \u0434\u043b\u044f \u0432\u0430\u0441. 8000 \u0447\u0435\u043b\u043e\u0432\u0435\u043a \u043d\u0430 GitHub \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u043e\u0448\u0438\u0431\u0430\u0442\u044c\u0441\u044f. <\/p>\n<p>  <a href=\"https:\/\/github.com\/Alamofire\/Alamofire\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/4a4\/4ee\/91b\/4a44ee91bb6f4984b4107f1a1f008f04.jpg\"\/><\/a><\/p>\n<h2>6. TextFieldEffects<\/h2>\n<p>  \u0412\u0430\u043c \u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f, \u0447\u0442\u043e UITextField \u0441\u043b\u0435\u0433\u043a\u0430 \u0441\u043a\u0443\u0447\u043d\u043e\u0432\u0430\u0442? \u041c\u043d\u0435 \u0442\u043e\u0436\u0435. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u043c TextFieldEffects! \u042f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043e \u043d\u0451\u043c \u043c\u043d\u043e\u0433\u043e, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043a\u0430\u0436\u0443 \u043f\u0430\u0440\u0443 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438:<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/13c\/876\/b50\/13c876b50ce26bf44b6a1c538aa203d8.gif\" alt=\"image\" \/><\/div>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/560\/532\/449\/560532449a57e754afe6528e15d83b04.gif\" alt=\"image\" \/><\/div>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cdf\/615\/89e\/cdf61589ec3eeb500594ccd51d3ff3e6.gif\" alt=\"image\" \/><\/div>\n<p>  \u0414\u0430, \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u0432\u0441\u0442\u0430\u0432\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u044b. \u0412\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c IBDesignables \u0432 \u043e\u043a\u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430.<\/p>\n<p>  <a href=\"https:\/\/github.com\/raulriera\/TextFieldEffects\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/983\/1dc\/97c\/9831dc97ca1a400193ed0ee51ebdc035.jpg\"\/><\/a><\/p>\n<h2>7. GPUImage<\/h2>\n<p>  \u0412\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043a\u0430\u043c\u0435\u0440\u044b? \u0415\u0441\u043b\u0438 \u043d\u0435\u0442, \u0442\u043e \u0432\u0430\u043c \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u0430 \u0441 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/52f\/cfd\/baa\/52fcfdbaa1cda66a629d8d413899aaf7.png\" alt=\"image\" \/><\/div>\n<p>  GPUImage \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u043e\u0432 \u043a\u0430\u043c\u0435\u0440\u044b (\u043a\u0430\u043a \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0432\u0438\u0434\u0435\u043e) \u0441 \u043d\u0435\u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c\u044e. \u0412 AppStore \u0441\u043e\u0442\u043d\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0445 \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443, \u0441\u0440\u0435\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0435\u0441\u0442\u044c \u0438 \u043e\u0434\u043d\u0430 \u043c\u043e\u044f.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/8b4\/3cb\/636\/8b43cb63694535e36ca5ff4b68b34c8f.png\" alt=\"image\"\/><\/p>\n<p>  8869 \u0437\u0432\u0451\u0437\u0434 \u043d\u0430 GitHub \u0438 \u0438\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0443\u0432\u0435\u043b\u0438\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <a href=\"http:\/\/github.com\/BradLarson\/GPUImage\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d61\/001\/af8\/d61001af81b54c81bfa1494c72ea57cd.jpg\"\/><\/a><\/p>\n<h2>8. iRate<\/h2>\n<p>  \u041a\u0430\u043a\u043e\u0439 \u0441\u0430\u043c\u044b\u0439 \u043b\u0443\u0447\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e\u0442\u0437\u044b\u0432\u043e\u0432 \u0432 AppStore? \u0423 \u043c\u0435\u043d\u044f \u043d\u0435\u0442 \u0442\u043e\u0447\u043d\u044b\u0445 \u043e\u0442\u0432\u0435\u0442\u043e\u0432 \u043d\u0430 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441, \u043d\u043e \u0435\u0441\u043b\u0438 \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c, \u044f \u0431\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0438\u043b \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0431 \u044d\u0442\u043e\u043c. \u041c\u043e\u0436\u0435\u0442, \u044d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0439 \u0441\u043f\u043e\u0441\u043e\u0431, \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u044e\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043e\u043f\u043e\u0432\u0435\u0449\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u043d\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043d\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u044d\u0442\u043e \u0438\u043b\u0438 \u0432\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0432\u0441\u0451 \u0441 \u043d\u0443\u043b\u044f, \u0442\u043e \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c iRate, \u0447\u0435\u043c \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c. \u0418 \u0432\u043e\u0442 \u0447\u0442\u043e \u0438\u0437 \u0441\u0435\u0431\u044f \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 iRate: \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442\u0435 \u043a \u0441\u0435\u0431\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0437\u0430\u0431\u044b\u0432\u0430\u0435\u0442\u0435 \u043e \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0441\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043e\u0442\u0437\u044b\u0432. iRate \u0441\u0434\u0435\u043b\u0430\u0435\u0442 \u044d\u0442\u043e \u0437\u0430 \u0432\u0430\u0441.<\/p>\n<p>  <a href=\"https:\/\/github.com\/nicklockwood\/iRate\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a1f\/fc6\/802\/a1ffc6802b5745e49458dcacce9b96c2.jpg\"\/><\/a><\/p>\n<h2>9. GameCenterManager<\/h2>\n<p>  \u041b\u044e\u0431\u0438\u0442\u0435 \u0432\u044b, \u0438\u043b\u0438 \u043d\u0435\u0442 singltons, \u043d\u043e \u0432 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Game Center`\u043e\u043c \u0441\u0442\u0430\u043d\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u0441 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0430\u043d\u0442\u0438-\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 (\u0443 \u0432\u0430\u0441 \u0436\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d Game Center \u0432 \u0438\u0433\u0440\u0435, \u043d\u0435 \u0442\u0430\u043a \u043b\u0438?). <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/b90\/933\/6a1\/b909336a1ddbb64d4b4f2db8a197fccc.png\" alt=\"image\"\/><\/p>\n<p>  \u041f\u043e \u043f\u0440\u0430\u0432\u0434\u0435 \u0433\u043e\u0432\u043e\u0440\u044f, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Game Centre\u2019\u043e\u043c \u0432 iOS \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u0441\u043b\u043e\u0436\u043d\u043e, \u043d\u043e \u0441 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u0435\u0449\u0435 \u043f\u0440\u043e\u0449\u0435 \u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0410 \u043b\u0443\u0447\u0448\u0435\u0435 \u2014 \u0432\u0440\u0430\u0433 \u0445\u043e\u0440\u043e\u0448\u0435\u0433\u043e.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/adc\/f8f\/78b\/adcf8f78bf2efd8b495756e39e8338c1.png\" alt=\"image\"\/><\/p>\n<p>  \u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b \u044d\u0442\u0443 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u0432 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0432\u043e\u0438\u0445 \u0438\u0433\u0440 \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u0435\u043d.<\/p>\n<p>  <a href=\"https:\/\/github.com\/nihalahmed\/GameCenterManager\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/1b6\/20a\/ade\/1b620aade7e84a2bb28d9fa338e50fa6.jpg\"\/><\/a><\/p>\n<h2>10. PKRevealController<\/h2>\n<p>  PKRevealController 2 \u2014 \u0436\u0435\u043c\u0447\u0443\u0436\u0438\u043d\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u043c\u043e\u0438\u0445 \u0441\u0430\u043c\u044b\u0445 \u043b\u044e\u0431\u0438\u043c\u044b\u0445 \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u0432 \u043c\u0430\u043d\u0438\u043f\u0443\u043b\u044f\u0446\u0438\u0439 \u0432 iOS. \u042d\u0442\u043e \u0431\u043e\u043a\u043e\u0432\u043e\u0435 \u0441\u043a\u043e\u043b\u044c\u0437\u044f\u0449\u0435\u0435 \u043c\u0435\u043d\u044e (\u043b\u0435\u0432\u043e\u0435, \u043f\u0440\u0430\u0432\u043e\u0435 \u0438\u043b\u0438 \u0434\u0432\u0443\u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0435), \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0441\u043a\u0430\u043b\u044c\u0437\u044b\u0432\u0430\u0435\u0442 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u0430\u043b\u044c\u0446\u0430 (\u0438\u043b\u0438 \u043f\u0440\u0438 \u043d\u0430\u0436\u0430\u0442\u0438\u0438 \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443, \u0447\u0442\u043e \u043d\u0435 \u0442\u0430\u043a \u043a\u0440\u0443\u0442\u043e, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u043b\u0430\u0439\u0434\u0438\u043d\u0433\u0430).<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2eb\/d04\/b21\/2ebd04b21f57853fe426ed910e5d474c.png\" alt=\"image\"\/><\/p>\n<p>  \u042f \u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u043e\u0445\u043e\u0436\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u043e PKRevealController \u043b\u0443\u0447\u0448\u0430\u044f. \u041b\u0451\u0433\u043a\u0430\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043a \u0438 \u0440\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u044f \u0436\u0435\u0441\u0442\u043e\u0432, \u0447\u0442\u043e \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u043e. \u0415\u0451 \u0441\u0442\u043e\u0438\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 iOS SDK \u043a\u0430\u043a \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442.<\/p>\n<p>  <a href=\"https:\/\/github.com\/pkluz\/PKRevealController\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/941\/dc1\/3a6\/941dc13a6eae468bad36812f7d6b243d.jpg\"\/><\/a><\/p>\n<h2>11. SlackTextViewController<\/h2>\n<p>  \u0412\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Slack iOS? \u0415\u0441\u043b\u0438 \u0432\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442\u0435 \u0432 \u043a\u0440\u0443\u043f\u043d\u043e\u0439 \u0444\u0438\u0440\u043c\u0435, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043d\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u043c \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0438, \u0441\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e \u0434\u0430. \u0414\u043b\u044f \u0442\u0435\u0445 \u0436\u0435, \u043a\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0438\u043c, \u0441\u043a\u0430\u0436\u0443 \u0432\u043e\u0442 \u0447\u0442\u043e: Slack \u0440\u0443\u043b\u0438\u0442! \u041a\u0430\u043a \u0438 Slack iOS, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0434\u043b\u044f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e, \u0432\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0442\u0435\u043a\u0441\u0442\u0430 \u2014 \u043a\u043e\u0434 \u0433\u043e\u0442\u043e\u0432 \u0434\u043b\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438!<\/p>\n<p>  \u0420\u0430\u0441\u0442\u0443\u0449\u0430\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u044c \u0442\u0435\u043a\u0441\u0442\u0430? \u0415\u0441\u0442\u044c. \u0420\u0430\u0441\u043f\u043e\u0437\u043d\u0430\u0432\u0430\u043d\u0438\u0435 \u0436\u0435\u0441\u0442\u043e\u0432, \u0430\u0432\u0442\u043e\u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435, \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043c\u0443\u043b\u044c\u0442\u0438\u043c\u0435\u0434\u0438\u0439\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432? \u0415\u0441\u0442\u044c. \u041f\u0440\u043e\u0441\u0442\u043e\u0435 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435? \u0415\u0441\u0442\u044c. \u0427\u0442\u043e \u0432\u0430\u043c \u0435\u0449\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043d\u0443\u0436\u043d\u043e?<\/p>\n<p>  <a href=\"https:\/\/github.com\/slackhq\/SlackTextViewController\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/bff\/9ad\/b02\/bff9adb02f77413cadf8f05da12c7af7.jpg\"\/><\/a><\/p>\n<h2>12. RETableViewManager<\/h2>\n<p>  RETableViewManager \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u0434\u0430. \u042d\u0442\u043e \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 (\u0434\u043b\u044f \u0442\u0435\u043a\u0441\u0442\u0430, \u0434\u0430\u0442 \u0438 \u0442.\u0434. \u2014 \u0441\u043c. \u0441\u043a\u0440\u0438\u043d\u0448\u043e\u0442\u044b \u043d\u0438\u0436\u0435), \u043d\u043e \u0432\u044b \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0432\u0438\u0434\u044b \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u0445 \u0441 \u0442\u0435\u043c\u0438, \u0447\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e. <\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ba5\/44c\/6ad\/ba544c6ad165b66c96cc5abb87dccdef.png\" alt=\"image\" \/><\/div>\n<p>  \u0412\u0441\u0451 \u044d\u0442\u043e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u043e\u043a\u043d\u0435 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 \u0431\u0435\u0437 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u043e \u0438\u043d\u043e\u0433\u0434\u0430 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u043e\u0439 \u043a\u043e\u0434, \u043d\u0435\u0436\u0435\u043b\u0438 \u0432\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440.<\/p>\n<p>  <a href=\"https:\/\/github.com\/romaonthego\/RETableViewManager\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a90\/b2f\/d9e\/a90b2fd9e1e24613a82823ab5667d998.jpg\"\/><\/a><\/p>\n<h2>13. PermissionScope<\/h2>\n<p>  \u041f\u043e\u043b\u0435\u0437\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0431\u043e\u043b\u0435\u0435 \u043a\u043e\u043c\u0444\u043e\u0440\u0442\u043d\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0443\u0442\u0451\u043c \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u044f \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0445 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439, \u043f\u0440\u0435\u0436\u0434\u0435 \u0447\u0435\u043c \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043e \u043d\u0438\u0445. \u0411\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 -&gt; \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 -&gt; \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 -&gt; \u043b\u0443\u0447\u0448\u0435 \u0441\u0442\u0430\u0442\u0438\u0441\u0442\u0438\u043a\u0430 -&gt; \u0431\u043e\u043b\u044c\u0448\u0435 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0439. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/3f5\/3ce\/495\/3f53ce495516c1ef7f3e71a07a3df34d.png\" alt=\"image\" \/><\/div>\n<p>  <a href=\"https:\/\/github.com\/nickoneill\/PermissionScope\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/12c\/cdb\/23f\/12ccdb23f16841498517ea87d2dfe02e.jpg\"\/><\/a><\/p>\n<h2>14. SVProgressHUD<\/h2>\n<p>  \u00ab\u042d\u0442\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u043b\u0436\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043f\u043e\u0434\u043e\u0436\u0434\u0438\u0442\u0435 \u0434\u043e\u043b\u044c\u0448\u0435 \u0438 \u043d\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0439\u0442\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443\u00bb. \u042d\u0442\u043e \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u043e, \u043a\u0430\u043a SVProgressHUD \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0432 \u0432\u0430\u0448\u0435\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f, \u044d\u0442\u043e \u043e\u0434\u0438\u043d (\u0438, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043b\u0443\u0447\u0448\u0438\u0439) \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/7e4\/1c4\/0fa\/7e41c40faa51cb71846572f17987722f.gif\" alt=\"image\" \/><\/div>\n<p>  <a href=\"https:\/\/github.com\/TransitApp\/SVProgressHUD\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/39a\/b07\/9ca\/39ab079ca0e84650a8217f99ba860764.jpg\"\/><\/a><\/p>\n<h2>15. FontAwesomeKit<\/h2>\n<p>  Font Awesome \u2014 \u0448\u0438\u043a\u0430\u0440\u0435\u043d, \u0430 \u0441 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u044b \u0441 \u043b\u0435\u0433\u043a\u043e\u0441\u0442\u044c\u044e \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043a \u0441\u0435\u0431\u0435 \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043b\u044e\u0431\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/280\/ce8\/103\/280ce8103bb06e04b1a1914c4d18f721.jpg\" alt=\"image\" \/><\/div>\n<p>  <a href=\"https:\/\/github.com\/PrideChung\/FontAwesomeKit\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/596\/b78\/100\/596b78100a414550aad2fa88ee8b03d3.jpg\"\/><\/a><\/p>\n<h2>16. SnapKit<\/h2>\n<p>  \u041b\u044e\u0431\u0438\u0442\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0435 \u043c\u0430\u043a\u0435\u0442\u044b? \u0410 \u0441\u043b\u0435\u0434\u0443\u0435\u0442!<\/p>\n<p>  <i>\u041f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435, \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0435\u0433\u043e \u0432 \u0440\u0430\u0441\u043a\u0430\u0434\u0440\u043e\u0432\u043a\u0435.<\/i><\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043a\u043e\u0434\u0430 \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0441\u043b\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u0441\u0442\u043e\u0440\u043e\u043d\u043d\u0435\u0439 \u043f\u043e\u043c\u043e\u0449\u0438, \u043d\u043e \u043a \u0441\u0447\u0430\u0441\u0442\u044c\u044e \u0435\u0441\u0442\u044c SnapKit \u0438 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043b\u0435\u0433\u043a\u0438\u043c, \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0439\u0442\u0435. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d2f\/e0a\/79f\/d2fe0a79ffc9fc3d24ee1709f4803b3c.png\" alt=\"image\"\/><\/p>\n<p>  <a href=\"https:\/\/github.com\/SnapKit\/SnapKit\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/54f\/1da\/a4c\/54f1daa4ccce4fad9206fa91cb58d538.jpg\"\/><\/a><\/p>\n<h2>17. MGSwipeTableCell<\/h2>\n<p>  \u0414\u0440\u0443\u0433\u043e\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0433\u043e \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0430\u043a \u0447\u0430\u0441\u0442\u043e \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432\u043e \u043c\u043d\u043e\u0433\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445, \u0447\u0442\u043e Apple, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u0434\u0443\u043c\u0430\u0442\u044c\u0441\u044f \u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0447\u0435\u0433\u043e-\u0442\u043e \u043f\u043e\u0434\u043e\u0431\u043d\u043e\u0433\u043e \u0432 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u0456OS SDK. \u041f\u0435\u0440\u0435\u043b\u0438\u0441\u0442\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u2014 \u043b\u0443\u0447\u0448\u0435\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f. \u041e\u0434\u0438\u043d \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/d99\/edb\/f1c\/d99edbf1cd4fa5585b999fb7cc96b009.gif\" alt=\"image\" \/><\/div>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/ba7\/228\/1b7\/ba72281b751e343e7036ac882f8a4fdb.gif\" alt=\"image\" \/><\/div>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/5bd\/824\/032\/5bd824032f81602ade8d9e7e3f2fee39.gif\" alt=\"image\" \/><\/div>\n<p>  \u042d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c 3 \u0432\u0438\u0434\u0430 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u0438, \u0435\u0441\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435. \u041f\u043e\u0447\u0438\u0442\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b README.<\/p>\n<p>  <a href=\"https:\/\/github.com\/MortimerGoro\/MGSwipeTableCell\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d0b\/c11\/0d0\/d0bc110d034041d08c3a2a92dd9b1f6e.jpg\"\/><\/a><\/p>\n<h2>18. Quick<\/h2>\n<p>  \u041c\u043e\u0434\u0443\u043b\u044c\u043d\u043e\u0435 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 Swift, \u0434\u043b\u044f Swift (\u043e\u043a, \u0434\u043b\u044f Objective-C \u0442\u043e\u0436\u0435), \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u0441 Xcode. \u0415\u0441\u043b\u0438 \u0432\u044b \u0444\u0430\u043d\u0430\u0442 Objective-C, \u044f \u0431\u044b \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043b Specta \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e, \u043d\u043e \u0434\u043b\u044f Swift, Quick \u0431\u0443\u0434\u0435\u0442, \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e, \u043b\u0443\u0447\u0448\u0438\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/9b1\/486\/10d\/9b148610dd896797edc46720ad6da387.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c64\/7c1\/d06\/c647c1d061fc9b964fd0537a0dee4f7c.png\" alt=\"image\"\/><a href=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/c64\/7c1\/d06\/c647c1d061fc9b964fd0537a0dee4f7c.png\">habrastorage.org\/getpro\/habr\/post_images\/c64\/7c1\/d06\/c647c1d061fc9b964fd0537a0dee4f7c.png<\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/Quick\/Quick\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/012\/b47\/3e5\/012b473e5866458ea6f752e4d934bcbe.jpg\"\/><\/a><\/p>\n<h2>19. IAPHelper<\/h2>\n<p>  \u041f\u043e\u043a\u0443\u043f\u043a\u0438 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445 \u043f\u0440\u0438\u043d\u043e\u0441\u044f\u0442 \u043d\u0430\u043c \u043e\u0433\u0440\u043e\u043c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0448\u0430\u0431\u043b\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u0434\u0430, \u043e\u0442 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u044d\u0442\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0431\u043e\u043b\u043e\u0447\u043a\u0443 \u0434\u043b\u044f \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0451\u043d\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0434\u0435\u043d\u0435\u0433 \u043e\u0442 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u0432\u0430\u0448 (\u0438\u043b\u0438 \u0432\u0430\u0448\u0435\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438) \u043a\u043e\u0448\u0435\u043b\u0451\u043a. <\/p>\n<p>  <a href=\"https:\/\/github.com\/saturngod\/IAPHelper\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/878\/9b2\/a8c\/8789b2a8c7914ae896c6e7ea113b466e.jpg\"\/><\/a><\/p>\n<h2>20. ReactiveCocoa<\/h2>\n<p>  \u0418\u0442\u0430\u043a, \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043c\u043e\u043d\u0441\u0442\u0440.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/711\/411\/d82\/711411d829d103f4bb4df55bd7336483.png\" alt=\"image\"\/><\/p>\n<p>  ReactiveCocoa \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0442\u0435\u0445, \u0447\u0442\u043e \u0443\u043f\u043e\u043c\u044f\u043d\u0443\u0442\u044b \u0432 \u044d\u0442\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435. ReactiveCocoa \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u0438\u043b\u044c\/\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0441\u0438\u0433\u043d\u0430\u043b\u043e\u0432 \u0438 \u043f\u043e\u0442\u043e\u043a\u043e\u0432. \u042d\u0442\u043e \u043d\u0435\u0447\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0441\u043d\u043e\u0433\u0441\u0448\u0438\u0431\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0438 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0430\u0443\u0447\u0438\u0442\u044c\u0441\u044f \u044d\u0442\u043e\u043c\u0443, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c, \u043a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u042d\u0442\u043e \u043d\u0435\u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0440\u0430\u0431\u043e\u0442\u0430, \u043d\u043e \u0441\u0442\u043e\u044f\u0449\u0430\u044f.<\/p>\n<p>  \u042d\u0442\u043e \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0435\u0435 \u043c\u0435\u0441\u0442\u043e, \u0447\u0442\u043e \u0431\u044b \u0443\u0447\u0438\u0442\u044c \u0432\u0430\u0441 ReactiveCocoa, \u043d\u043e \u0432\u043e\u0442 \u0432\u0430\u043c \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u0435\u0441\u043b\u0438 \u0432\u044b \u0437\u0430\u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043e\u0432\u0430\u043b\u0438\u0441\u044c:<\/p>\n<p>  <a href=\"http:\/\/www.teehanlax.com\/blog\/getting-started-with-reactivecocoa\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/e73\/6bd\/337\/e736bd3370ec4263a127476e439d73b0.jpg\"\/><\/a><\/p>\n<p>  <a href=\"http:\/\/nshipster.com\/reactivecocoa\/\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/c16\/5c4\/d68\/c165c4d68e244d6e905cde678ff779a9.jpg\"\/><\/a><\/p>\n<p>  <a href=\"http:\/\/www.raywenderlich.com\/62699\/reactivecocoa-tutorial-pt1\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/773\/8d3\/012\/7738d3012e1d4ccabfb71cd044e6716b.jpg\"\/><\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/ReactiveCocoa\/ReactiveCocoa\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/428\/09b\/638\/42809b638e034195b937035c883f22c6.jpg\"\/><\/a><\/p>\n<h2>21. SwiftyJSON<\/h2>\n<p>  \u0414\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u043e\u0449\u0435 \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0430\u043d\u0430\u043b\u0438\u0437 JSON \u0432 Swift.<\/p>\n<p>  <a href=\"https:\/\/github.com\/SwiftyJSON\/SwiftyJSON\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/cb5\/1d0\/75c\/cb51d075c74d416a918085871c015dde.jpg\"\/><\/a><\/p>\n<h2>22. Spring<\/h2>\n<p>  \u0414\u0435\u043b\u0430\u0435\u0442 \u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044e \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u0446\u0435\u043f\u043d\u043e\u0439 \u0438 \u0434\u0435\u043a\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/887\/457\/253\/887457253b240d95c6ffafcf012f7cb0.jpg\" alt=\"image\"\/><\/p>\n<p>  <a href=\"https:\/\/github.com\/MengTo\/Spring\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a66\/891\/64b\/a6689164b08b41409a9c42728d8fedca.jpg\"\/><\/a><\/p>\n<h2>23. FontBlaster<\/h2>\n<p>  \u0423\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0448\u0440\u0438\u0444\u0442\u043e\u0432 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435.<\/p>\n<p>  <a href=\"https:\/\/github.com\/ArtSabintsev\/FontBlaster\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f2c\/0e9\/2c6\/f2c0e92c6ddf4c7294a88e3ffd46b5c4.jpg\"\/><\/a><\/p>\n<h2>24. TAPromotee <\/h2>\n<p>  \u041f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u0442\u043d\u043e\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u0436\u0435\u043d\u0438\u0435 \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043b\u0443\u0447\u0448\u0438\u0445 \u043c\u0430\u0440\u043a\u0435\u0442\u0438\u043d\u0433\u043e\u0432\u044b\u0445 \u0441\u0442\u0440\u0430\u0442\u0435\u0433\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e. \u0410 \u0441 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u044d\u0442\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c\u0441\u044f \u0442\u0430\u043a \u043f\u0440\u043e\u0441\u0442\u043e, \u0447\u0442\u043e \u0432\u044b \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u043f\u0440\u0430\u0432\u0434\u044b\u0432\u0430\u0442\u044c\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e: \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 TAPromotee \u0432 \u0432\u0430\u0448 \u043f\u0440\u043e\u0444\u0438\u043b\u044c, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u0442\u0435 \u0438 \u043d\u0430\u0441\u043b\u0430\u0436\u0434\u0430\u0439\u0442\u0435\u0441\u044c \u0431\u043e\u043b\u044c\u0448\u0438\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u043d\u0438\u0439, \u0441\u043e\u0432\u0441\u0435\u043c \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e.<\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/93e\/a88\/d23\/93ea88d2306cda32433a3c6a4655f379.png\" alt=\"image\" \/><\/div>\n<p>  <a href=\"https:\/\/github.com\/JanC\/TAPromotee\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d77\/d46\/f37\/d77d46f3785640f69fa8dc146d34ce01.jpg\"\/><\/a><\/p>\n<h2>25. Concorde<\/h2>\n<p>  \u0417\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0435 \u043c\u043d\u043e\u0433\u043e JPEG \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435? \u0421 Concorde \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u0432 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u043c \u0432\u0438\u0434\u0435. \u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/2c8\/a71\/3b5\/2c8a713b5e5c275b41e4f8783713c34b.gif\" alt=\"image\"\/><\/p>\n<p>  <a href=\"https:\/\/github.com\/contentful-labs\/Concorde\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/be2\/a10\/917\/be2a1091767049eeaaca2167e9d96b62.jpg\"\/><\/a><\/p>\n<h2>26. KeychainAccess <\/h2>\n<p>  \u041c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0432\u0441\u043f\u043e\u043c\u043e\u0433\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 Keychain.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/b8b\/e78\/6dc\/b8be786dcd7f427ab12e2c41ec12486f.jpg\"\/><\/p>\n<p>  <a href=\"https:\/\/github.com\/kishikawakatsumi\/KeychainAccess\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/47c\/5a6\/5fc\/47c5a65fc87a4f7ca437053126bd37e4.jpg\"\/><\/a><\/p>\n<h2>27. iOS-charts<\/h2>\n<p>  \u0418 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u044f\u044f \u043f\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0443, \u043d\u043e \u043d\u0435 \u043f\u043e \u0432\u0430\u0436\u043d\u043e\u0441\u0442\u0438 \u2013 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u0438\u0430\u0433\u0440\u0430\u043c\u043c \u0432 iOS! \u041e\u043d\u0430 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u0438 \u043a\u0440\u0430\u0441\u0438\u0432\u0430, \u0447\u0442\u043e \u044f \u043d\u0435 \u0431\u0443\u0434\u0443 \u043f\u0438\u0441\u0430\u0442\u044c \u043c\u043d\u043e\u0433\u043e\u0435. \u041f\u0440\u043e\u0441\u0442\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u0442\u0435 \u043d\u0438\u0436\u0435 \u0447\u0442\u043e \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0451\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u0435 \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438.<\/p>\n<p>  <a href=\"https:\/\/github.com\/danielgindi\/ios-charts\"><\/p>\n<div style=\"text-align:center;\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/cae\/e12\/948\/caee129488ed2e448199c729da92b710.png\" alt=\"image\" \/><\/div>\n<p><\/a><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/ec0\/674\/551\/ec0674551aa94057b44a0e469d3cd4d3.jpg\"\/><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u043c\u043d\u043e\u0433\u043e \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432<\/b><\/p>\n<div class=\"spoiler_text\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/13b\/a0a\/f5f\/13ba0af5fe368b449cc0432808692006.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/32d\/e24\/9de\/32de249de28663bc3ec753c99d33e14a.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/df2\/825\/965\/df28259651d6c2c7b74bfd72f1270bbd.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/628\/7b0\/359\/6287b0359e58b10eec7939e9b2f9008c.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/77e\/eed\/10e\/77eeed10e55ab5ef049b83814e8e63ed.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/821\/fda\/4b0\/821fda4b0539d6763a852a4a3836c18e.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/74b\/7f4\/049\/74b7f404934bbe573dc824adc74ebba7.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/9cf\/fea\/ddd\/9cffeaddd4e8a2662fff6a2252ed8384.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/981\/d39\/3c3\/981d393c30914a42b1f1ce191a6ec444.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/bd7\/ee1\/853\/bd7ee1853034574f49de4a0e54c1bd59.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/e67\/f0d\/0de\/e67f0d0de19a1f89e844667f13b14765.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/74e\/34d\/b03\/74e34db0338d8ee041b6de282312bcbe.png\" alt=\"image\"\/><\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/0b5\/ccb\/db7\/0b5ccbdb713708c8abd4ba2a477c8b45.png\" alt=\"image\"\/><\/p><\/div>\n<\/div>\n<p>  \u0414\u0430, \u044d\u0442\u043e \u0432\u0441\u0451 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043a\u0430\u043a \u0432\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0439 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442.<br \/>  \u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u0435\u0449\u0451 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0438 CocoaPods, \u0442\u0430\u043a \u0447\u0442\u043e \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0442\u0430\u0449\u0438\u0442\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0438\u0437 \u0432\u0430\u0448\u0435\u0433\u043e Xcode \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0443\u044e \u043e\u0431\u043b\u0430\u0441\u0442\u044c.<\/p>\n<h2>TL;DR<\/h2>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0441\u043f\u0438\u0441\u043e\u043a \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a<\/b><\/p>\n<div class=\"spoiler_text\"><a href=\"https:\/\/github.com\/dzenbot\/DZNEmptyDataSet\">DZNEmptyDataSet<\/a> [UI, \u043f\u0443\u0441\u0442\u044b\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b]<br \/>  <a href=\"https:\/\/github.com\/jivesoftware\/PDTSimpleCalendar\">PDTSimpleCalendar<\/a> [UI, \u043a\u0430\u043b\u0435\u043d\u0434\u0430\u0440\u044c]<br \/>  <a href=\"https:\/\/github.com\/magicalpanda\/MagicalRecord\">MagicalRecord<\/a> [\u043f\u043e\u043c\u043e\u0449\u044c \u0441 Core Data]<br \/>  <a href=\"https:\/\/github.com\/ViccAlexander\/Chameleon\">Chameleon<\/a> [UI, \u0440\u0430\u0431\u043e\u0442\u0430 \u0441 \u0446\u0432\u0435\u0442\u043e\u043c]<br \/>  <a href=\"https:\/\/github.com\/Alamofire\/Alamofire\">Alamofire<\/a> [Swift networking]<br \/>  <a href=\"https:\/\/github.com\/raulriera\/TextFieldEffects\">TextFieldEffects<\/a> [UI, \u0442\u0435\u043a\u0441\u0442]<br \/>  <a href=\"https:\/\/github.com\/BradLarson\/GPUImage\">GPUImage<\/a> [\u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435 \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a]<br \/>  <a href=\"https:\/\/github.com\/nicklockwood\/iRate\">iRate<\/a> [\u0440\u0435\u0439\u0442\u0438\u043d\u0433\u0438]<br \/>  <a href=\"https:\/\/github.com\/nihalahmed\/GameCenterManager\">GameCenterManager<\/a> [\u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 Game Center]<br \/>  <a href=\"https:\/\/github.com\/pkluz\/PKRevealController\">PKRevealController<\/a> [UI, \u043c\u0435\u043d\u044e\u0448\u043a\u0438]<br \/>  <a href=\"https:\/\/github.com\/slackhq\/SlackTextViewController\">SlackTextViewController<\/a> [UI, \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u043f\u043e\u043b\u0435\u0439]<br \/>  <a href=\"https:\/\/github.com\/romaonthego\/RETableViewManager\">RETableViewManager<\/a> [\u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0442\u0430\u0431\u043b\u0438\u0446]<br \/>  <a href=\"https:\/\/github.com\/nickoneill\/PermissionScope\">PermissionScope<\/a> [UI, \u0437\u0430\u043f\u0440\u043e\u0441\u044b]<br \/>  <a href=\"https:\/\/github.com\/TransitApp\/SVProgressHUD\">SVProgressHUD<\/a> [UI, \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 \u043e\u0436\u0438\u0434\u0430\u043d\u0438\u044f]<br \/>  <a href=\"https:\/\/github.com\/PrideChung\/FontAwesomeKit\">FontAwesomeKit<\/a> [easily add Font Awesome to your project]<br \/>  <a href=\"https:\/\/github.com\/SnapKit\/SnapKit\">SnapKit<\/a> [easy auto layout in code]<br \/>  <a href=\"https:\/\/github.com\/MortimerGoro\/MGSwipeTableCell\">MGSwipeTableCell<\/a> [UI, swipeable table view cells]<br \/>  <a href=\"https:\/\/github.com\/Quick\/Quick\">Quick<\/a> [Swift unit testing framework]<br \/>  <a href=\"https:\/\/github.com\/saturngod\/IAPHelper\">IAPHelper<\/a> [In-App Purchases helper wrapper]<br \/>  <a href=\"https:\/\/github.com\/ReactiveCocoa\/ReactiveCocoa\">ReactiveCocoa<\/a> [FRP]<br \/>  <a href=\"https:\/\/github.com\/SwiftyJSON\/SwiftyJSON\">SwiftyJSON<\/a> [\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430]<br \/>  <a href=\"https:\/\/github.com\/MengTo\/Spring\">Spring<\/a> [\u0430\u043d\u0438\u043c\u0430\u0446\u0438\u044f]<br \/>  <a href=\"https:\/\/github.com\/ArtSabintsev\/FontBlaster\">FontBlaster<\/a> [\u0448\u0440\u0438\u0444\u0442\u044b]<br \/>  <a href=\"https:\/\/github.com\/JanC\/TAPromotee\">TAPromotee<\/a> [cross promote your apps with drop-in view]<br \/>  <a href=\"https:\/\/github.com\/contentful-labs\/Concorde\">Concorde<\/a> [\u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0439 JPEG]<br \/>  <a href=\"https:\/\/github.com\/kishikawakatsumi\/KeychainAccess\">KeychainAccess<\/a> [manage keychain easily]<br \/>  <a href=\"https:\/\/github.com\/danielgindi\/ios-charts\">iOS-charts<\/a> [\u0433\u0440\u0430\u0444\u0438\u043a\u0438]  <\/div>\n<\/div>\n<p>  <\/p>\n<hr\/>\n<p>  <\/p>\n<h2>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 EDISON Software<\/h2>\n<p>  \u0412\u043e\u0442 \u0442\u0430\u043a \u043c\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0443, \u043a\u0430\u043a\u043e\u0439 \u0441\u043f\u043e\u0441\u043e\u0431 \u043e\u043f\u043b\u0430\u0442\u044b \u0432\u044b\u0431\u0440\u0430\u0442\u044c:  <\/p>\n<div class=\"oembed\">\n<div>\n<div style=\"left: 0px; width: 100%; height: 0px; position: relative; padding-bottom: 56.2493%;\"><iframe src=\"https:\/\/www.youtube.com\/embed\/YKhnhxJbu8Q?rel=0&amp;showinfo=1\" frameborder=\"0\" allowfullscreen=\"true\" webkitallowfullscreen=\"true\" mozallowfullscreen=\"true\" style=\"top: 0px; left: 0px; width: 100%; height: 100%; position: absolute;\"><\/iframe><\/div>\n<\/div>\n<\/div>\n<p>  \u0410 \u0432\u043e\u0442 \u0442\u0430\u043a \u043c\u044b \u0437\u0430\u0431\u043e\u0442\u0438\u043c\u0441\u044f \u043e\u0431 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438 \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/59f\/503\/65b\/59f50365b2fb823836e533eac96aef48.jpg\" alt=\"image\"\/><br \/>  \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0431\u043b\u043e\u0433\u0435 \u2014 <a href=\"https:\/\/www.edsd.ru\/ru\/o_kompanii\/novosti\/organizaciya-prostranstva-tipovogo-centra-razrabotki\">\u00ab\u041e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0442\u0438\u043f\u043e\u0432\u043e\u0433\u043e \u0446\u0435\u043d\u0442\u0440\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00bb<\/a><br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habrahabr.ru\/post\/314444\/\"> https:\/\/habrahabr.ru\/post\/314444\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 <a href=\"https:\/\/www.edsd.ru\/ru\/proekty\/portfolio\">\u043f\u043e\u0440\u0442\u0444\u043e\u043b\u0438\u043e \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 EDISON Software<\/a> \u0435\u0441\u0442\u044c 8 \u043f\u0440\u043e\u0435\u0442\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 <a href=\"https:\/\/www.edsd.ru\/mobilnye-prilozheniya-dlya-dostupa-k-korporativnoj-infrastrukture\">\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0434 Android<\/a> \u0438 4 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u043f\u043e\u0434 iOS:  <\/p>\n<ul>\n<li><a href=\"https:\/\/www.edsd.ru\/servis-dostavki-bankovskih-uvedomlenij-na-smartfony\">\u0421\u0435\u0440\u0432\u0438\u0441 \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0431\u0430\u043d\u043a\u043e\u0432\u0441\u043a\u0438\u0445 \u0443\u0432\u0435\u0434\u043e\u043c\u043b\u0435\u043d\u0438\u0439 \u043d\u0430 \u0441\u043c\u0430\u0440\u0442\u0444\u043e\u043d\u044b<\/a><\/li>\n<li> <a href=\"https:\/\/www.edsd.ru\/prilozhenie-vivaldi-dlya-raboty-s-ehlektronnoj-bibliotekoj\">\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 Vivaldi \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439<\/a><\/li>\n<li> <a href=\"https:\/\/www.edsd.ru\/virusnaya-rassylka-informacii\">\u0412\u0438\u0440\u0443\u0441\u043d\u0430\u044f \u0440\u0430\u0441\u0441\u044b\u043b\u043a\u0430 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438<\/a><\/li>\n<li> <a href=\"https:\/\/www.edsd.ru\/mobilnye-prilozheniya-dlya-dostupa-k-korporativnoj-infrastrukture\">\u041c\u043e\u0431\u0438\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435<\/a><\/li>\n<\/ul>\n<p>  \u0425\u043e\u0442\u0438\u043c \u043f\u043e\u0434\u0435\u043b\u0438\u0442\u044c\u0441\u044f \u0441 \u0432\u0430\u043c\u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u043f\u043e\u0434\u0431\u043e\u0440\u043a\u043e\u0439 open-source \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a \u0434\u043b\u044f iOS \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430.<\/p>\n<h2>1. DZNEmptyDataSet<\/h2>\n<p>  \u042d\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c, \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u043c \u0432 iOS, \u043a\u0430\u043a \u0441\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043f\u0443\u0441\u0442\u044b\u043c\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u043c\u0438 \u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u043e\u043c \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439. \u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0435\u0441\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0447\u043d\u043e\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u0443\u0441\u0442\u043e\u0435, \u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f. \u042d\u0442\u043e \u043d\u0435 \u043b\u0443\u0447\u0448\u0438\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u043e\u043f\u044b\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c. <\/p>\n<p>  \u0421 \u044d\u0442\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u043e\u0439 \u0432\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c \u0438 iOS \u0441\u0430\u043c\u0430 \u043f\u043e\u0437\u0430\u0431\u043e\u0442\u0438\u0442\u044c\u0441\u044f \u043e \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u0435 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u0439 \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0435 \u043e\u0441\u043e\u0431\u044b\u043c \u0448\u0440\u0438\u0444\u0442\u043e\u043c, \u0432 \u0432\u0438\u0434\u0435 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f. \u042d\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0440\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e\u0434 iOS. <\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/post_images\/151\/e44\/539\/151e4453990593ac83f9b7944544d8cd.png\" alt=\"image\"\/><\/p>\n<p>  <a href=\"https:\/\/github.com\/dzenbot\/DZNEmptyDataSet\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/a00\/947\/56e\/a0094756e9e04d3b8d64032d15249c7d.jpg\"\/><\/a>  <\/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-280542","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280542","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=280542"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/280542\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=280542"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=280542"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=280542"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}