{"id":1086,"date":"2021-09-12T15:39:56","date_gmt":"2021-09-12T06:39:56","guid":{"rendered":"https:\/\/blog.enyou.net\/ko\/?p=1086"},"modified":"2021-09-13T20:11:04","modified_gmt":"2021-09-13T11:11:04","slug":"combine-%ec%82%b4%ed%8e%b4%eb%b3%b4%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/blog.enyou.net\/ko\/archives\/1086","title":{"rendered":"Combine \uc0b4\ud3b4\ubcf4\uae30"},"content":{"rendered":"\n<p>2019\ub144,&nbsp;\uc560\ud50c\uc774 WWDC\uc5d0\uc11c \ucef4\ubc14\uc778\uc744 \uc18c\uac1c\ud558\uba74\uc11c \ucef4\ubc14\uc778\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud588\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>that&#8217;s what Combine is, a unified declarative API for processing values over time. Combine is written in and for Swift.<\/p><p>\ucef4\ubc14\uc778\uc740 \uc2dc\uac04\uc5d0 \ub530\ub978 \uac12\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud55c \ud1b5\uc77c\ub41c \uc120\uc5b8\uc801 API\uc785\ub2c8\ub2e4. \ucef4\ubc14\uc778\uc740 \uc2a4\uc704\ud504\ud2b8\ub85c \uc791\uc131\uc774 \ub418\uc5c8\uace0, \uc2a4\uc704\ud504\ud2b8\ub97c \uc704\ud55c \uac83\uc785\ub2c8\ub2e4.<\/p><\/blockquote>\n\n\n\n<p>\ub610\ud55c, \uacf5\uc2dd \ud648\ud398\uc774\uc9c0\uc5d0\uc11c\ub294 Combine\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud558\uace0 \uc788\ub2e4. \uc704\uc758 \ubb38\uc7a5\uacfc \uc544\ub798\uc758 \ubb38\uc7a5\uc774 \uc560\ud50c\uc774 \uc0dd\uac01\ud558\ub294 Combine\uc758 \uae30\ubcf8\uc801 \ucee8\uc149\uc774\ub77c\uace0 \ubcfc \uc218\ub3c4 \uc788\uc744 \uac83 \uac19\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Customize handling of asynchronous events by combining event-processing operators.<\/p><p>\uc774\ubca4\ud2b8 \ucc98\ub9ac \uc624\ud37c\ub808\uc774\ud130\ub97c \ud1b5\ud574 \ube44\ub3d9\uae30 \uc774\ubca4\ud2b8\ub97c \uc6d0\ud558\ub294\ub300\ub85c \ucc98\ub9ac\ud558\uc138\uc694.<\/p><\/blockquote>\n\n\n\n<p>\uc560\ud50c\uc774 \uc9c1\uc811\uc801\uc73c\ub85c \ucef4\ubc14\uc778\uc744 (Functional) Reactive Programming\uc774\ub77c\uace0\ub3c4, ReactiveX\uc758 \uad6c\ud604\uccb4\ub77c\uace0\ub3c4 \ud558\uc9c0 \uc54a\uc558\uc9c0\ub9cc \uc77c\ub2e8 \ub300\ucda9 \ube44\uc2b7\ud55c \uac83\uc774\uad6c\ub098\ud558\ub294 \uc778\uc9c0\ub97c \ud558\uace0 \uc788\ub2e4.<sup class=\"modern-footnotes-footnote \" data-mfn=\"1\" data-mfn-post-scope=\"00000000000005670000000000000000_1086\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005670000000000000000_1086-1\">1<\/a><\/sup><span id=\"mfn-content-00000000000005670000000000000000_1086-1\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"1\">\uac12\uc758 \ubcc0\ud654\uac00 \ub2e4\ub978 \uac12\uc5d0 \ub9e4\ud551\ub418\ub294 \uc810. \uadf8\ub9ac\uace0 \uc624\ud37c\ub808\uc774\ud130\ub4e4\uc758 \ud2b9\uc131\uc744 \ubcfc \ub54c, \uc5c4\uc5f0\ud788 \uadf8\ub7ec\ud55c \ud328\ub7ec\ub2e4\uc784\uc744 \ub530\ub77c\uac00\uace0 \uc788\ub294 \uac83\uc740 \uc0ac\uc2e4\uc774\ub2e4. \ud558\uc9c0\ub9cc, \uc5ec\uc804\ud788 RX\uc640 Combine\uc740 \ud568\uc218\ud615 \uc5b8\uc5b4\ub97c \uc704\ud55c \uac83\ub3c4 \uc544\ub2c8\uba70, \ub2e4\uc591\ud55c \uc0ac\uc774\ub4dc \uc774\ud399\ud2b8\ub97c \ub9cc\ub4dc\ub294 \ucf54\ub4dc\ub97c \ud5c8\uc6a9\ud558\uba70, \uadf8\ub7ec\ud55c \uc0ac\uc774\ub4dc \uc774\ud399\ud2b8\ub85c \uc778\ud574 \ud56d\uc0c1 Reactive Programming\uc778 \uac83\ub3c4 \uc544\ub2c8\ub77c\uc11c \ub530\ub85c \uadf8\ub7ec\ud55c \uac1c\ub150\uc744 \uc5b8\uae09\ud558\uc9c0\ub3c4 \uc54a\uace0, \uc2ec\uc9c0\uc5b4 RX\uc5d0\uc11c\ub294 \ubd80\uc815\ud558\uace0 \uc788\ub294 \uac83 \uac19\ub2e4.<\/span><sup class=\"modern-footnotes-footnote \" data-mfn=\"2\" data-mfn-post-scope=\"00000000000005670000000000000000_1086\"><a href=\"javascript:void(0)\"  role=\"button\" aria-pressed=\"false\" aria-describedby=\"mfn-content-00000000000005670000000000000000_1086-2\">2<\/a><\/sup><span id=\"mfn-content-00000000000005670000000000000000_1086-2\" role=\"tooltip\" class=\"modern-footnotes-footnote__note\" tabindex=\"0\" data-mfn=\"2\">\ub2e8,\u00a0\ub9ac\uc561\ud130 \ud328\ud134(https:\/\/en.wikipedia.org\/wiki\/Reactor_pattern )\uc740 \ub530\ub978\ub2e4\uace0 \ubcfc \uc218 \uc788\uc744 \uac83 \uac19\ub2e4.\u00a0RX \uacf5\uc2dd \ud648\ud398\uc774\uc9c0 Observable\uc5d0\uc11c\ub3c4 \uc5b8\uae09\ub41c \uc0ac\ud56d.<\/span><\/p>\n\n\n\n<p>\ub098\ub294 Combine \uc704\uc8fc\ub85c\ub9cc \uc4f0\uace0 \uc788\uc5c8\ub294\ub370,&nbsp;\ucd5c\uadfc\uc5d0 \uc5c5\ubb34\ub97c \ud558\uba74\uc11c RX&nbsp;\uc704\uc8fc\ub85c \uc791\uc131\ub41c \ud30c\ud2b8\ub97c \ubd24\ub2e4.&nbsp;\uc5ed\uc2dc \uac19\uc73c\uba74\uc11c \ubbf8\ubb18\ud558\uac8c \ubb34\uc5b8\uac00 \ub2e4\ub974\ub2e4\ub294 \uc0dd\uac01\uc744 \ud588\ub294\ub2e4.(\ubb3c\ub860,&nbsp;\uac1c\ub150\uc801\uc73c\ub85c \ube44\uc2b7\ud558\uae30\uc5d0 \ubb38\uc11c\ub97c \ubcf4\uba74 \ubc14\ub85c\ubc14\ub85c \ucf54\ub529\uc774 \uac00\ub2a5\ud558\uaca0\uc9c0\ub9cc.)&nbsp;\ubcf8 \uae00\uc5d0\uc11c\ub294 Combine\uc758 \uae30\ubcf8 \uc694\uc18c\ub97c(Introduce Combine\uc5d0 \uc758\ud558\uba74, Publisher, Operator, Subscriber.) \ud558\ub098\uc529 \ub2e4\uc2dc \ubcf4\uba74\uc11c \ub300\uccb4\uc801\uc73c\ub85c \ube44\uc2b7\ud558\uc9c0\ub9cc, \uc911\uac04\uc911\uac04 RX\uc640 \uc5b4\ub5a4 \ub2e4\ub978 \ud2b9\uc131\uc744 \uc9c0\ub2c8\uace0 \uc788\ub294\uc9c0 \uc54c\uc544\ubcf4\ub824\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\uc694\ubaa8\uc870\ubaa8<\/h2>\n\n\n\n<p>\ub300\ubd80\ubd84 <a href=\"http:\/\/reactivex.io\/\">RX \uacf5\uc2dd \ud648\ud398\uc774\uc9c0<\/a>\uc640 <a href=\"https:\/\/developer.apple.com\/documentation\/combine\">\uc560\ud50c Combine \ubb38\uc11c<\/a>\uc5d0 \uae30\ubc18\ud558\ub294 \ub0b4\uc6a9\ub4e4\uc744 \uc815\ub9ac\ud55c \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ube60\ub974\uac8c \ube44\uc2b7\ud55c \uac1c\ub150\uc744 \ucc3e\uace0 \uc2f6\uc73c\uc2e0 \uacbd\uc6b0 <a href=\"https:\/\/github.com\/CombineCommunity\/rxswift-to-combine-cheatsheet\">rxswift-to-combine-cheatsheet<\/a>\ub97c \ubcf4\uc2dc\uba74 \uc218\uc6d4\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>RXSwift\uc758 \uacbd\uc6b0\uc5d0\ub294 \ub300\ubd80\ubd84\uc774 Class \uad6c\ud604\uccb4\uc774\ub2e4. \uadf8\ub7ec\ub098 Combine\uc758 \uacbd\uc6b0\uc5d0\ub294 \ub300\ubd80\ubd84\uc774 Protocol\ub85c \uc815\uc758\ub418\uc5b4 \uc788\uae30 \ub54c\ubb38\uc5d0 \ud544\uc694\ud558\ub2e4\uba74 \uc9c1\uc811 \uad6c\ud604\uc744 \ub9cc\ub4e4\uc5b4\uc11c \uc4f8 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\ubaa9\ucc28<\/h2>\n\n\n\n<ol class=\"wp-block-list\"><li><a href=\"https:\/\/blog.enyou.net\/ko\/archives\/1090\">Publisher<\/a><\/li><li>Subscriber<\/li><li>Operator<\/li><li>Scheduler<\/li><\/ol>\n","protected":false},"excerpt":{"rendered":"<p>2019\ub144,&nbsp;\uc560\ud50c\uc774 WWDC\uc5d0\uc11c \ucef4\ubc14\uc778\uc744 \uc18c\uac1c\ud558\uba74\uc11c \ucef4\ubc14\uc778\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 \uc815\uc758\ud588\ub2e4. that&#8217;s what Combine is, a unified declarative API for processing values over time. Combine is written in and for Swift. \ucef4\ubc14\uc778\uc740 \uc2dc\uac04\uc5d0 \ub530\ub978 \uac12\uc744 \ucc98\ub9ac\ud558\uae30 \uc704\ud55c \ud1b5\uc77c\ub41c \uc120\uc5b8\uc801 API\uc785\ub2c8\ub2e4. \ucef4\ubc14\uc778\uc740 \uc2a4\uc704\ud504\ud2b8\ub85c \uc791\uc131\uc774 \ub418\uc5c8\uace0, \uc2a4\uc704\ud504\ud2b8\ub97c \uc704\ud55c \uac83\uc785\ub2c8\ub2e4. \ub610\ud55c, \uacf5\uc2dd \ud648\ud398\uc774\uc9c0\uc5d0\uc11c\ub294 Combine\uc744 \ub2e4\uc74c\uacfc \uac19\uc774 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1086","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts\/1086"}],"collection":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/comments?post=1086"}],"version-history":[{"count":6,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts\/1086\/revisions"}],"predecessor-version":[{"id":1120,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/posts\/1086\/revisions\/1120"}],"wp:attachment":[{"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/media?parent=1086"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/categories?post=1086"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.enyou.net\/ko\/wp-json\/wp\/v2\/tags?post=1086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}