<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Ekko</title>
    <link>https://ekko.tistory.com/</link>
    <description>iOS 개발을 공부합니다</description>
    <language>ko</language>
    <pubDate>Sun, 21 Jun 2026 20:18:07 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Ekko0701</managingEditor>
    <image>
      <title>Ekko</title>
      <url>https://tistory1.daumcdn.net/tistory/5441109/attach/5f556d4c03f14cfd8e3f4e1b07be9e1c</url>
      <link>https://ekko.tistory.com</link>
    </image>
    <item>
      <title>Swift) Enum 열거형</title>
      <link>https://ekko.tistory.com/52</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://zeddios.tistory.com/12&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://zeddios.tistory.com/12&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ujeon.medium.com/swift-enums-f75124db5271&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ujeon.medium.com/swift-enums-f75124db5271&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://jusung.gitbook.io/the-swift-language-guide/language-guide/08-enumerations&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://jusung.gitbook.io/the-swift-language-guide/language-guide/08-enumerations&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Enum (열거형)은 관련된 값으로 이루어진 그룹을 공통의 형(type)으로 선언해 안정성을 보장하는 방법으로 코드를 다룰 수 있게 해 준다. 다시 말해 유사한 종류의 여러 값들을 유의미한 이름으로 한 곳에 모아 정의한 것이다. &lt;u&gt;열거형 자체가 하나의 데이터 타입이다&lt;/u&gt;. 또한 다른 언어의 열거형과는 많이 다르고 상속이 불가능하다는 특징이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 사용 해보면서 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열거형은 enum 키워드로 생성이 가능하고 타입이기 때문에 대문자로 시작해야 한다. 그리고 각 case에 값들을 입력해 준다. 한 줄에 여러 값을 입력해도 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.51.12.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUjsG7/btrValWjmeh/RXmW8jzhE9Z3zQgFKbRk6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUjsG7/btrValWjmeh/RXmW8jzhE9Z3zQgFKbRk6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUjsG7/btrValWjmeh/RXmW8jzhE9Z3zQgFKbRk6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUjsG7%2FbtrValWjmeh%2FRXmW8jzhE9Z3zQgFKbRk6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;119&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.51.12.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 사용한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.55.19.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;342&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CJuH4/btrU6Y8p8GO/qSQ6AIQUmCfmeowcPkGWG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CJuH4/btrU6Y8p8GO/qSQ6AIQUmCfmeowcPkGWG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CJuH4/btrU6Y8p8GO/qSQ6AIQUmCfmeowcPkGWG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCJuH4%2FbtrU6Y8p8GO%2FqSQ6AIQUmCfmeowcPkGWG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;342&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.55.19.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;342&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 말했듯이 열거형은 데이터&amp;nbsp; 타입으로 변수를 선언할 때 변수에 타입을 알려줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 enum은 &lt;b&gt;switch문&lt;/b&gt;에 자주 사용되는데 변수에 들어올 값을 미리 정의해뒀기 때문이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.58.36.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c35gFE/btrU8Gl9vwC/C4Hs3FbOhLsKgz3p24xSNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c35gFE/btrU8Gl9vwC/C4Hs3FbOhLsKgz3p24xSNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c35gFE/btrU8Gl9vwC/C4Hs3FbOhLsKgz3p24xSNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc35gFE%2FbtrU8Gl9vwC%2FC4Hs3FbOhLsKgz3p24xSNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;312&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.58.36.png&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;관련값( Associated Values )&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열거형의 각 case에 custom type의 추가적인 정보를 저장할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 값들은 switch case 문이나 if문에서 사용이 가능하다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 6.45.58.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;630&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OTNQC/btrU9dK1GDM/gYcFsyHGe3Sfu9x6Ub8Wkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OTNQC/btrU9dK1GDM/gYcFsyHGe3Sfu9x6Ub8Wkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OTNQC/btrU9dK1GDM/gYcFsyHGe3Sfu9x6Ub8Wkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOTNQC%2FbtrU9dK1GDM%2FgYcFsyHGe3Sfu9x6Ub8Wkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;290&quot; data-filename=&quot;스크린샷 2023-01-02 오후 6.45.58.png&quot; data-origin-width=&quot;1302&quot; data-origin-height=&quot;630&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;원시값 ( Raw Values )&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;case에 raw 값 ( = 원시값)을 지정할 수도 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.00.48.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nodTR/btrVeyt7Xhn/Dqs4UFzRoqei1IHsaPmPJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nodTR/btrVeyt7Xhn/Dqs4UFzRoqei1IHsaPmPJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nodTR/btrVeyt7Xhn/Dqs4UFzRoqei1IHsaPmPJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnodTR%2FbtrVeyt7Xhn%2FDqs4UFzRoqei1IHsaPmPJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;139&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.00.48.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예제를 보면 sunny에만 원시값 1을 주었는데 만약 원시값을 할당하지 않으면 Swift에서 자동으로 값을 할당해 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cloudy는 암시적으로 2 그리고 rainy는 3이 할당된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.09.54.png&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;434&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xO7sc/btrVex9NkLS/TM2zlVumtE0Thgg8DdNO40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xO7sc/btrVex9NkLS/TM2zlVumtE0Thgg8DdNO40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xO7sc/btrVex9NkLS/TM2zlVumtE0Thgg8DdNO40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxO7sc%2FbtrVex9NkLS%2FTM2zlVumtE0Thgg8DdNO40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;347&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.09.54.png&quot; data-origin-width=&quot;626&quot; data-origin-height=&quot;434&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 원시값은 String, Character, Float, Double 등의 타입도 가능하다. 단, 원시값은 유일한 값으로 중복되어서는 안 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Double 형으로도 함 해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.11.57.png&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtyMQ9/btrVamnsLwX/ebxRDYNjz8y4NkBPHi6RK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtyMQ9/btrVamnsLwX/ebxRDYNjz8y4NkBPHi6RK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtyMQ9/btrVamnsLwX/ebxRDYNjz8y4NkBPHi6RK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdtyMQ9%2FbtrVamnsLwX%2FebxRDYNjz8y4NkBPHi6RK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1794&quot; height=&quot;204&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.11.57.png&quot; data-origin-width=&quot;1794&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;에러가 발생하는데 원시값이 정수값이 아니라면 정의하라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.13.08.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sxwi8/btrU8FHzWVA/d3pUnlVYpkOP2gC4Ms3wIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sxwi8/btrU8FHzWVA/d3pUnlVYpkOP2gC4Ms3wIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sxwi8/btrU8FHzWVA/d3pUnlVYpkOP2gC4Ms3wIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsxwi8%2FbtrU8FHzWVA%2Fd3pUnlVYpkOP2gC4Ms3wIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;640&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.13.08.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 또 잘 나온다. 참고하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Double형도 그렇고 만약 Character Type을 원시값으로 사용하면 원시값을 자동으로 할당해주지 않기 때문에 모든 case에 원시값을 할당해줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 원시값을 String으로 해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.15.42.png&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;502&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdxCaa/btrVgiD4rg4/2fKziUkNIFlK5bTitur9uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdxCaa/btrVgiD4rg4/2fKziUkNIFlK5bTitur9uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdxCaa/btrVgiD4rg4/2fKziUkNIFlK5bTitur9uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdxCaa%2FbtrVgiD4rg4%2F2fKziUkNIFlK5bTitur9uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;301&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.15.42.png&quot; data-origin-width=&quot;834&quot; data-origin-height=&quot;502&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보이는 것과 같이 String을 원시값으로 사용하면 case 텍스트가 원시값으로 자동으로 할당된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원시값을 사용해서 열거형 변수를 초기화할 수도 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.19.22.png&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oDbRz/btrVe3AB9kU/U1QJYE3nYCU1925cjUsRsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oDbRz/btrVe3AB9kU/U1QJYE3nYCU1925cjUsRsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oDbRz/btrVe3AB9kU/U1QJYE3nYCU1925cjUsRsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoDbRz%2FbtrVe3AB9kU%2FU1QJYE3nYCU1925cjUsRsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;336&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.19.22.png&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;336&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nowDirection은 원시값이 &quot;west&quot;인 값인 west가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단, rawValue가 없는 값이 있을 수 있으므로 Optional 타입으로 반환된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 관련값(Associated value)과 원시값(raw value)을 함께 사용할 수는 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.23.53.png&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qNEYx/btrVexvdmI7/V0yPm5ByJvpmogQ26hZzik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qNEYx/btrVexvdmI7/V0yPm5ByJvpmogQ26hZzik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qNEYx/btrVexvdmI7/V0yPm5ByJvpmogQ26hZzik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqNEYx%2FbtrVexvdmI7%2FV0yPm5ByJvpmogQ26hZzik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1790&quot; height=&quot;206&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.23.53.png&quot; data-origin-width=&quot;1790&quot; data-origin-height=&quot;206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;열거형에 메서드를 추가할 수도 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.27.48.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;766&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/43mJG/btrVcNyiEmM/5Pf00MMqhhdQS8tff3L7f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/43mJG/btrVcNyiEmM/5Pf00MMqhhdQS8tff3L7f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/43mJG/btrVcNyiEmM/5Pf00MMqhhdQS8tff3L7f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F43mJG%2FbtrVcNyiEmM%2F5Pf00MMqhhdQS8tff3L7f1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;412&quot; data-filename=&quot;스크린샷 2023-01-02 오후 7.27.48.png&quot; data-origin-width=&quot;930&quot; data-origin-height=&quot;766&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 프로토콜도 채택할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 8.19.00.png&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3CHCm/btrU29Jsb2q/M6eaYGZeLsm5cTMkKNKVKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3CHCm/btrU29Jsb2q/M6eaYGZeLsm5cTMkKNKVKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3CHCm/btrU29Jsb2q/M6eaYGZeLsm5cTMkKNKVKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3CHCm%2FbtrU29Jsb2q%2FM6eaYGZeLsm5cTMkKNKVKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1262&quot; height=&quot;378&quot; data-filename=&quot;스크린샷 2023-01-02 오후 8.19.00.png&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 enum에 대해 알아보았다.&lt;/p&gt;</description>
      <category>Swift</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/52</guid>
      <comments>https://ekko.tistory.com/52#entry52comment</comments>
      <pubDate>Mon, 2 Jan 2023 20:19:37 +0900</pubDate>
    </item>
    <item>
      <title>Swift) Struct &amp;amp; Class</title>
      <link>https://ekko.tistory.com/51</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Swift_logo_horz_lockup_color_rgb.png&quot; data-origin-width=&quot;191&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRJhKl/btrVeVCtQNz/ksskaIAcLoybar5pVhuo80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRJhKl/btrVeVCtQNz/ksskaIAcLoybar5pVhuo80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRJhKl/btrVeVCtQNz/ksskaIAcLoybar5pVhuo80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRJhKl%2FbtrVeVCtQNz%2FksskaIAcLoybar5pVhuo80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;191&quot; height=&quot;59&quot; data-filename=&quot;Swift_logo_horz_lockup_color_rgb.png&quot; data-origin-width=&quot;191&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Struct와 Class는 프로그램 코드를 조직화하기 위해 일반적으로 사용한다. 객체 지향에 필수 요소이기도 하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;구조체 ( Struct )&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대부분의 타입이 구조체이다&lt;/li&gt;
&lt;li&gt;타입을 정의하는 것이기 때문에 대문자 Camel-case를 사용한다.&lt;/li&gt;
&lt;li&gt;Property와 Method로 나뉜다.&lt;/li&gt;
&lt;li&gt;값 타입&lt;/li&gt;
&lt;li&gt;구조체 변수를 새로운 변수에 할당할 때마다 새로운 구조체가 할당된다.&amp;nbsp;&lt;br /&gt;= 같은 구조체를 여러 개의 변수에 할당한 뒤 값을 변경시키더라도 다른 변수에 영향을 주지 않는다. (값 자체를 복사)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;구조체 선언&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단한 구조체를 만들어 보았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.25.05.png&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CQFhV/btrVaTFkG7X/x8UkNf7krKpK7taO3YvLk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CQFhV/btrVaTFkG7X/x8UkNf7krKpK7taO3YvLk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CQFhV/btrVaTFkG7X/x8UkNf7krKpK7taO3YvLk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCQFhV%2FbtrVaTFkG7X%2Fx8UkNf7krKpK7taO3YvLk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;672&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.25.05.png&quot; data-origin-width=&quot;884&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조체 안에는 Property(속성)와 Method(메서드)가 있다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;인스턴스 생성 및 프로퍼티 접근&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.38.04.png&quot; data-origin-width=&quot;988&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rcrbQ/btrU3bG8d2e/mGLcLxabGGJfsiBOXniVA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rcrbQ/btrU3bG8d2e/mGLcLxabGGJfsiBOXniVA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rcrbQ/btrU3bG8d2e/mGLcLxabGGJfsiBOXniVA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrcrbQ%2FbtrU3bG8d2e%2FmGLcLxabGGJfsiBOXniVA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;382&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.38.04.png&quot; data-origin-width=&quot;988&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;점(dot) 문법을 통해 구조체 인스턴스의 프로퍼티에 접근할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;타입 프로퍼티 및 메서드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static이 붙은 타입 프로퍼티와 타입 메서드는 SomeStruct라는 타입 자체에서 사용 가능한 프로퍼티와 메서드이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.42.44.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crEFMk/btrU43INE4Q/M9FuPxPZ4KIH9k3UBW0BEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crEFMk/btrU43INE4Q/M9FuPxPZ4KIH9k3UBW0BEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crEFMk/btrU43INE4Q/M9FuPxPZ4KIH9k3UBW0BEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrEFMk%2FbtrU43INE4Q%2FM9FuPxPZ4KIH9k3UBW0BEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;222&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.42.44.png&quot; data-origin-width=&quot;1100&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타입 프로퍼티와 타입 메서드는 인스턴스에서는 사용할 수 없다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;클래스&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;u&gt;&lt;b&gt;참조 타입&lt;/b&gt;&lt;/u&gt;&lt;/li&gt;
&lt;li&gt;ARC로 메모리를 관리&lt;/li&gt;
&lt;li&gt;같은 클래스 인스턴스를 여려 개의 변수에 할당한 뒤 값을 변경시키면 할당한 모든 변수에 영향을 준다. (메모리 복사)&lt;/li&gt;
&lt;li&gt;deinit을 사용해 클래스 인스턴스의 메모리 할당을 해제한다.&lt;/li&gt;
&lt;li&gt;상속이 가능하지만, 다중 상속은 불가&lt;/li&gt;
&lt;li&gt;타입 이름은 Camel-case 사용&lt;u&gt;&lt;b&gt;&lt;/b&gt;&lt;/u&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;클래스 선언&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.54.44.png&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t9zUd/btrVcmge8GB/bSBitkHeFJVyuqoUiNsYP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t9zUd/btrVcmge8GB/bSBitkHeFJVyuqoUiNsYP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t9zUd/btrVcmge8GB/bSBitkHeFJVyuqoUiNsYP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft9zUd%2FbtrVcmge8GB%2FbSBitkHeFJVyuqoUiNsYP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;564&quot; data-filename=&quot;스크린샷 2023-01-02 오후 4.54.44.png&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본적인 내용은 구조체와 동일하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만 &lt;b&gt;클래스는 &lt;u&gt;참조 타입&lt;/u&gt;이기 때문에 가변 인스턴스도 프로퍼티 변경이 가능하다&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.03.25.png&quot; data-origin-width=&quot;1136&quot; data-origin-height=&quot;354&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ADVue/btrU8FHsyiD/kwbCroHGiAg9vaV4tWUlp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ADVue/btrU8FHsyiD/kwbCroHGiAg9vaV4tWUlp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ADVue/btrU8FHsyiD/kwbCroHGiAg9vaV4tWUlp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FADVue%2FbtrU8FHsyiD%2FkwbCroHGiAg9vaV4tWUlp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;354&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.03.25.png&quot; data-origin-width=&quot;1136&quot; data-origin-height=&quot;354&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;타입 메서드 static, class&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;class는 구조체와는 다르게 &lt;b&gt;상속&lt;/b&gt;이 가능하다. static 메서드는 상속을 받았을때받았을 때 재정의가 불가하고 class 메서드는 상속을 받았을 때 재정의 (Override)가 가능하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.07.32.png&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9UPPE/btrU8F8viy1/vq9kjke8qe62eIKt54CHD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9UPPE/btrU8F8viy1/vq9kjke8qe62eIKt54CHD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9UPPE/btrU8F8viy1/vq9kjke8qe62eIKt54CHD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9UPPE%2FbtrU8F8viy1%2Fvq9kjke8qe62eIKt54CHD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;596&quot; data-filename=&quot;스크린샷 2023-01-02 오후 5.07.32.png&quot; data-origin-width=&quot;980&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구조체와 클래스의 기본 사용법에 대해 알아보았다. 다음 글에서 더 자세하게 알아보자.&lt;/p&gt;</description>
      <category>Swift</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/51</guid>
      <comments>https://ekko.tistory.com/51#entry51comment</comments>
      <pubDate>Mon, 2 Jan 2023 17:13:39 +0900</pubDate>
    </item>
    <item>
      <title>Git) Commit Message를 VSC(Visual Studio Code)로 작성하기</title>
      <link>https://ekko.tistory.com/50</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Git-Logo-2Color.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cikhSm/btrU1NFRxVB/gYyvPlEkD7bpOzQxaQAk31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cikhSm/btrU1NFRxVB/gYyvPlEkD7bpOzQxaQAk31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cikhSm/btrU1NFRxVB/gYyvPlEkD7bpOzQxaQAk31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcikhSm%2FbtrU1NFRxVB%2FgYyvPlEkD7bpOzQxaQAk31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;188&quot; data-filename=&quot;Git-Logo-2Color.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃을 사용하다 보면 커밋 메시지를 길게 작성하는 경우도 있는데 이때 &lt;b&gt;git commit -m &quot;message&quot;&lt;/b&gt;를 이용하기 보다는 &lt;b&gt;git commit&lt;/b&gt;으로 에디터를 통해 커밋 메시지를 작성해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cat.txt를 생성하고 커밋해 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.54.38.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;68&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QETfS/btrU2JJYfyk/UdwNy7ifvTx7UijGMvEVEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QETfS/btrU2JJYfyk/UdwNy7ifvTx7UijGMvEVEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QETfS/btrU2JJYfyk/UdwNy7ifvTx7UijGMvEVEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQETfS%2FbtrU2JJYfyk%2FUdwNy7ifvTx7UijGMvEVEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;68&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.54.38.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;68&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git commit을 입력하면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi 에디터가 열린다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_스크린샷 2022-12-28 오후 9.15.13.png&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLi3o5/btrU2JDehfi/sMnM62Wko2IlrT58cOkZHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLi3o5/btrU2JDehfi/sMnM62Wko2IlrT58cOkZHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLi3o5/btrU2JDehfi/sMnM62Wko2IlrT58cOkZHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLi3o5%2FbtrU2JDehfi%2FsMnM62Wko2IlrT58cOkZHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1091&quot; height=&quot;383&quot; data-filename=&quot;edited_스크린샷 2022-12-28 오후 9.15.13.png&quot; data-origin-width=&quot;1091&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 위에 커밋 메시지를 적고 에디터를 나오면 (:wq) 커밋이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vi에디터보다 좀 더 편한 에디터를 이용해 보자&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃 공식 문서에 에디터를 변경하는 방법이 자세하게 나와있다.&lt;/p&gt;
&lt;figure id=&quot;og_1672585557530&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Git - Setup and Config&quot; data-og-description=&quot;A3.1 Appendix C: Git Commands - Setup and Config Throughout the book we have introduced dozens of Git commands and have tried hard to introduce them within something of a narrative, adding more commands to the story slowly. However, this leaves us with exa&quot; data-og-host=&quot;git-scm.com&quot; data-og-source-url=&quot;https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config&quot; data-og-url=&quot;https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://git-scm.com/book/en/v2/Appendix-C%3A-Git-Commands-Setup-and-Config&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Git - Setup and Config&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A3.1 Appendix C: Git Commands - Setup and Config Throughout the book we have introduced dozens of Git commands and have tried hard to introduce them within something of a narrative, adding more commands to the story slowly. However, this leaves us with exa&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;git-scm.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 에디터 중에서도 Visual Studio Code를 이용해 보자. TextEdit도 편하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.26.07.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;990&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z14UR/btrU6XU33y4/WMrq1dfdqnuYT4xAhckF6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z14UR/btrU6XU33y4/WMrq1dfdqnuYT4xAhckF6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z14UR/btrU6XU33y4/WMrq1dfdqnuYT4xAhckF6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz14UR%2FbtrU6XU33y4%2FWMrq1dfdqnuYT4xAhckF6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1582&quot; height=&quot;990&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.26.07.png&quot; data-origin-width=&quot;1582&quot; data-origin-height=&quot;990&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령어를 터미널에서 실행하자.&lt;/p&gt;
&lt;pre id=&quot;code_1672585719524&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git config --global core.editor &quot;code --wait&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 Cat.txt파일을 git add로 스테이지에 추가하고 Commit을 해보면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.28.51.png&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0XBLx/btrVaSZWKX1/lR3PtPAxp2jt1mDEkerPsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0XBLx/btrVaSZWKX1/lR3PtPAxp2jt1mDEkerPsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0XBLx/btrVaSZWKX1/lR3PtPAxp2jt1mDEkerPsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0XBLx%2FbtrVaSZWKX1%2FlR3PtPAxp2jt1mDEkerPsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1146&quot; height=&quot;516&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.28.51.png&quot; data-origin-width=&quot;1146&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;'code --wait' 명령어에 에러가 발생한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;해결은 방법은 간단하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Visual Studio Code를 열고 cmd + shift + p로 커맨드 팔레트를 열자.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-02 오전 12.11.41.png&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzIAeh/btrU015pWtW/bfHAPx2lp2e7dQ7JIumNK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzIAeh/btrU015pWtW/bfHAPx2lp2e7dQ7JIumNK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzIAeh/btrU015pWtW/bfHAPx2lp2e7dQ7JIumNK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzIAeh%2FbtrU015pWtW%2FbfHAPx2lp2e7dQ7JIumNK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1212&quot; height=&quot;192&quot; data-filename=&quot;스크린샷 2023-01-02 오전 12.11.41.png&quot; data-origin-width=&quot;1212&quot; data-origin-height=&quot;192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팔레트에 code를 검색하고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Shell Command: Install 'code' command in Path&lt;/b&gt;로 'code' 명령어를 추가하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 다시 git commit을 입력하면 잘 실행이 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.35.19.png&quot; data-origin-width=&quot;2452&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFw8v0/btrU36ZgIfu/kOaOGKWgKFOMFWvGlyVttk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFw8v0/btrU36ZgIfu/kOaOGKWgKFOMFWvGlyVttk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFw8v0/btrU36ZgIfu/kOaOGKWgKFOMFWvGlyVttk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFw8v0%2FbtrU36ZgIfu%2FkOaOGKWgKFOMFWvGlyVttk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2452&quot; height=&quot;914&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.35.19.png&quot; data-origin-width=&quot;2452&quot; data-origin-height=&quot;914&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동시에 터미널을 보면 에디터가 닫히길 기다린다고 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 커밋 메시지를 작성하고 저장한 후 에디터를 닫으면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.39.24.png&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;814&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgfCYe/btrU8Fs6UlR/DTUNRHNHiKoTFUEzZnZKK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgfCYe/btrU8Fs6UlR/DTUNRHNHiKoTFUEzZnZKK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgfCYe/btrU8Fs6UlR/DTUNRHNHiKoTFUEzZnZKK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgfCYe%2FbtrU8Fs6UlR%2FDTUNRHNHiKoTFUEzZnZKK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1240&quot; height=&quot;814&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.39.24.png&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;814&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커밋이 완료된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.40.06.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WoIrf/btrU6Zeie5b/zVCJCYBWhhECKcyW74NjF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WoIrf/btrU6Zeie5b/zVCJCYBWhhECKcyW74NjF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WoIrf/btrU6Zeie5b/zVCJCYBWhhECKcyW74NjF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWoIrf%2FbtrU6Zeie5b%2FzVCJCYBWhhECKcyW74NjF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1134&quot; height=&quot;78&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.40.06.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git log명령어를 실행해서 보면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.40.27.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;438&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PxC1W/btrU6ZyBIAH/RiR6H5FUGvmAGXfLIas2Kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PxC1W/btrU6ZyBIAH/RiR6H5FUGvmAGXfLIas2Kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PxC1W/btrU6ZyBIAH/RiR6H5FUGvmAGXfLIas2Kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPxC1W%2FbtrU6ZyBIAH%2FRiR6H5FUGvmAGXfLIas2Kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1134&quot; height=&quot;438&quot; data-filename=&quot;스크린샷 2022-12-28 오후 9.40.27.png&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;438&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커밋 메시지가 잘 추가된 걸 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;긴 커밋 메시지가 필요할 때 사용하자&lt;/p&gt;</description>
      <category>기타 개발 관련/Git</category>
      <category>git</category>
      <category>github</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/50</guid>
      <comments>https://ekko.tistory.com/50#entry50comment</comments>
      <pubDate>Mon, 2 Jan 2023 00:18:12 +0900</pubDate>
    </item>
    <item>
      <title>Git) Git기초 - 저장소 생성하기 그리고 추가하고 커밋하기 (git init, git add, git commit)</title>
      <link>https://ekko.tistory.com/49</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Git-Logo-2Color.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2hkp4/btrU0u0VVo6/QIkwuPO0V1qlZ3QWyoaWBk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2hkp4/btrU0u0VVo6/QIkwuPO0V1qlZ3QWyoaWBk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2hkp4/btrU0u0VVo6/QIkwuPO0V1qlZ3QWyoaWBk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2hkp4%2FbtrU0u0VVo6%2FQIkwuPO0V1qlZ3QWyoaWBk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;188&quot; data-filename=&quot;Git-Logo-2Color.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Git Repository &lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Git Repository(=Git Repo)&lt;/b&gt;는 &lt;b&gt;깃 저장소&lt;/b&gt;로 깃 저장소는 그 프로젝트의 이력을 갖고 있는 깃 작업 공간이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 Git으로 관리할 디렉토리를 생성하고 생성한 디렉토리로 이동해 주자.&lt;/p&gt;
&lt;pre id=&quot;code_1672578451324&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ mkdir MyMusician
$ cd MyMusician&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Git Repo 생성&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 git status 명령어는 현재 git 저장소의 상태를 보고해 주는 명령어이다.&lt;/p&gt;
&lt;pre id=&quot;code_1672579138307&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ git status&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;명령어를 실행해보면 git repository가 아니라고 나온다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.19.21.png&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;70&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TwLde/btrU15zv81U/qChLNqK8ScuHGYEMQhRomK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TwLde/btrU15zv81U/qChLNqK8ScuHGYEMQhRomK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TwLde/btrU15zv81U/qChLNqK8ScuHGYEMQhRomK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTwLde%2FbtrU15zv81U%2FqChLNqK8ScuHGYEMQhRomK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1078&quot; height=&quot;70&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.19.21.png&quot; data-origin-width=&quot;1078&quot; data-origin-height=&quot;70&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 현재 디렉토리에 Git 저장소를 생성하자.&lt;/p&gt;
&lt;pre id=&quot;code_1672579002954&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ git init&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.20.25.png&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cchR7Y/btrU37Rh1hQ/g3D7KaOeMKN3cRqVstKz6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cchR7Y/btrU37Rh1hQ/g3D7KaOeMKN3cRqVstKz6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cchR7Y/btrU37Rh1hQ/g3D7KaOeMKN3cRqVstKz6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcchR7Y%2FbtrU37Rh1hQ%2Fg3D7KaOeMKN3cRqVstKz6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1108&quot; height=&quot;82&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.20.25.png&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 디렉토리에 Git Repository가 생성되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ls -a 명령어로 확인해 보면. git 디렉토리가 생겼다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.21.50.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;78&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dR4dAz/btrU6XOfLMf/I7oEEcEET5YXrzxwCXK8xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dR4dAz/btrU6XOfLMf/I7oEEcEET5YXrzxwCXK8xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dR4dAz/btrU6XOfLMf/I7oEEcEET5YXrzxwCXK8xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdR4dAz%2FbtrU6XOfLMf%2FI7oEEcEET5YXrzxwCXK8xK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;78&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.21.50.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;78&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git 저장소를 만들고 다시 git status를 실행하면&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.23.29.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNcsfF/btrU7IQ1HTK/HlKWkICsrRKv2OZNijH580/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNcsfF/btrU7IQ1HTK/HlKWkICsrRKv2OZNijH580/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNcsfF/btrU7IQ1HTK/HlKWkICsrRKv2OZNijH580/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNcsfF%2FbtrU7IQ1HTK%2FHlKWkICsrRKv2OZNijH580%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;198&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.23.29.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 main 브랜치고, 아직 커밋이 없다고 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Git 워크플로우&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본격적으로 Git을 사용해보기 전에 git의 워크플로우에 대해 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git에는 세 가지 공간이 있다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. Working Directory - 작업 디렉토리&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. Staging area - 스테이지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. Repository - 저장소&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 &lt;b&gt;Working Directory&lt;/b&gt;는 프로젝트에서 실제로 작업을 하는 공간이라고 생각하자. 파일을 생성하고 변경하면 먼저 Working directory에서 작업하게 된다. 그리고 Working directory에서 생성하고 변경한 내용을 변경 사항이라고 보자. 이 변경 사항들은&amp;nbsp; &lt;b&gt;git add&lt;/b&gt; 명령어를 통해 &lt;b&gt;Stage Area&lt;/b&gt;에 올릴 수 있다. Stage는 커밋하기 전에 변경사항을 등록하는 공간이고 Stage에 올라간 파일들은 staging상태가 된다. Staging 상태의 파일은 &lt;b&gt;git commit&lt;/b&gt; 명령을 통해 &lt;b&gt;Git Repository(저장소)&lt;/b&gt;에 올라간다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.26.10.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;424&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ANwH7/btrU9diVRd7/hCN3PrOULfj7qOHBlMV7nK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ANwH7/btrU9diVRd7/hCN3PrOULfj7qOHBlMV7nK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ANwH7/btrU9diVRd7/hCN3PrOULfj7qOHBlMV7nK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FANwH7%2FbtrU9diVRd7%2FhCN3PrOULfj7qOHBlMV7nK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;533&quot; height=&quot;323&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.26.10.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;424&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글만으로는 이해하기 힘드니 직접 해보면서 살펴보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Staging Area에 추가하기 ( git add )&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 MyMusician디렉터리에 파일을 생성하자&lt;/p&gt;
&lt;pre id=&quot;code_1672580566466&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;touch ladygaga.txt
touch michael-jackson.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 git status를 통해 저장소의 상태를 확인해 보자&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.45.21.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;376&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pjn2M/btrU2LnsRRx/Jezuhrk0N1UPLk9SF2OfG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pjn2M/btrU2LnsRRx/Jezuhrk0N1UPLk9SF2OfG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pjn2M/btrU2LnsRRx/Jezuhrk0N1UPLk9SF2OfG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpjn2M%2FbtrU2LnsRRx%2FJezuhrk0N1UPLk9SF2OfG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;376&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.45.21.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;376&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방금 생성한 두 개의 txt파일이 Untracked files라고 나온다. Untracked files는 추적되지 않는 파일. 즉, 버전 관리가 되지 않는 파일을 뜻한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 ladygaga.txt파일을 추적하도록 해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;git add&lt;/b&gt; 명령어로 ladygaga.txt 파일을 Stage에 올리자.&lt;/p&gt;
&lt;pre id=&quot;code_1672580962705&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ git add ladygaga.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.48.19.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blIHW5/btrU1pkHq3R/HA4BUY6Uc0d5abw4bilit1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blIHW5/btrU1pkHq3R/HA4BUY6Uc0d5abw4bilit1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blIHW5/btrU1pkHq3R/HA4BUY6Uc0d5abw4bilit1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblIHW5%2FbtrU1pkHq3R%2FHA4BUY6Uc0d5abw4bilit1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;454&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.48.19.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git status로 확인해 보면 위와 같이 나오는데 new file인 ladygaga.txt가 스테이지에 올라갔다는 의미이다. michael-jacson.txt는 아직 올라가지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;저장소에 커밋하기 ( git commit )&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 Stage에 있는 파일을 git commit명령어로 Commit 해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1672581406482&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git commit -m &quot;커밋 메시지&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.56.29.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;142&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2evnq/btrU43Vu3B8/oQFXhOajQle4RQ18IKpmz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2evnq/btrU43Vu3B8/oQFXhOajQle4RQ18IKpmz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2evnq/btrU43Vu3B8/oQFXhOajQle4RQ18IKpmz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2evnq%2FbtrU43Vu3B8%2FoQFXhOajQle4RQ18IKpmz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;142&quot; data-filename=&quot;스크린샷 2023-01-01 오후 10.56.29.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;142&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스테이지에 있던 ladygaga.txt가 정상적으로 Git 저장소에 올라간 상태이다. 이제 ladygaga.txt는 깃에 의해 추적되며 버전 관리가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;michael-jackson.txt는 아직 추적되지 않는 상태로 남아있고 버전 관리가 되지 않는다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;커밋 조회하기 ( git log )&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;위에서 커밋을 했으니 커밋 내역을 조회해 보자.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;git log 명령어를 사용한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.03.33.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ov837/btrU441bBUL/enpJFrBjajefWd6zwXIVX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ov837/btrU441bBUL/enpJFrBjajefWd6zwXIVX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ov837/btrU441bBUL/enpJFrBjajefWd6zwXIVX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fov837%2FbtrU441bBUL%2FenpJFrBjajefWd6zwXIVX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;214&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.03.33.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;michael jackson.txt도 commit 해보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.05.58.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KXL2L/btrVaRUeCiD/K1Y6HKFwO8KLDX2XhEFfM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KXL2L/btrVaRUeCiD/K1Y6HKFwO8KLDX2XhEFfM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KXL2L/btrVaRUeCiD/K1Y6HKFwO8KLDX2XhEFfM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKXL2L%2FbtrVaRUeCiD%2FK1Y6HKFwO8KLDX2XhEFfM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;174&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.05.58.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;174&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 ladygaga.txt를 커밋할 때와 다른 점은 git commit 명령어를 옵션 없이 사용했다는 것인데 -m 옵션 없이 git commit만을 사용하면 에디터를 이용해 커밋 메시지를 작성할 수 있다. 이 방법은 다음에 포스팅하겠다. 링크&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 git status를 실행하면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.07.34.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bs3nAj/btrU8Fmir2r/qk1H9yXiZVGn5DezPxePY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bs3nAj/btrU8Fmir2r/qk1H9yXiZVGn5DezPxePY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bs3nAj/btrU8Fmir2r/qk1H9yXiZVGn5DezPxePY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbs3nAj%2FbtrU8Fmir2r%2Fqk1H9yXiZVGn5DezPxePY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;100&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.07.34.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커밋할게 없고 워킹 트리가 깨끗하다고 한다. 즉, 변경된 모든 것들을 깃이 추적하고 업데이트했다는 뜻이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 ladygaga.txt 파일을 변경해 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.11.53.png&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rQti9/btrU9diXnT5/yqZnitC9aakkt4RVfJg3EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rQti9/btrU9diXnT5/yqZnitC9aakkt4RVfJg3EK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rQti9/btrU9diXnT5/yqZnitC9aakkt4RVfJg3EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrQti9%2FbtrU9diXnT5%2FyqZnitC9aakkt4RVfJg3EK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1570&quot; height=&quot;372&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.11.53.png&quot; data-origin-width=&quot;1570&quot; data-origin-height=&quot;372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ladygaga.txt파일에 글을 쓰고 저장한 후 git status로 확인해 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.12.55.png&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTRHVR/btrU1MGVsbW/q7oJ4Ndtjr09JHtVU8jSWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTRHVR/btrU1MGVsbW/q7oJ4Ndtjr09JHtVU8jSWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTRHVR/btrU1MGVsbW/q7oJ4Ndtjr09JHtVU8jSWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTRHVR%2FbtrU1MGVsbW%2Fq7oJ4Ndtjr09JHtVU8jSWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1060&quot; height=&quot;272&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.12.55.png&quot; data-origin-width=&quot;1060&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ladygaga.txt가 &lt;b&gt;modified&lt;/b&gt; 되었다고 나온다. (michael-jackson.txt는 변경사항이 없기에 나오지 않는다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;git이 이 파일을 추적하고 있다는 것!&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 변경사항을 깃 저장소에 반영해 보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 스테이지에 올리자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.17.30.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPcAJ6/btrU9d4jEXP/np1IoyRNgaxbBDmX9X5nJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPcAJ6/btrU9d4jEXP/np1IoyRNgaxbBDmX9X5nJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPcAJ6/btrU9d4jEXP/np1IoyRNgaxbBDmX9X5nJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPcAJ6%2FbtrU9d4jEXP%2Fnp1IoyRNgaxbBDmX9X5nJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;214&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.17.30.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;커밋될 변경사항 ladygaga.txt modified 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스테이지에 올렸으면 git commit으로 저장소에 커밋해 주자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.19.55.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2oi9t/btrU6X1MV2B/CtTJ6J1zPELNFqMaSnAdZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2oi9t/btrU6X1MV2B/CtTJ6J1zPELNFqMaSnAdZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2oi9t/btrU6X1MV2B/CtTJ6J1zPELNFqMaSnAdZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2oi9t%2FbtrU6X1MV2B%2FCtTJ6J1zPELNFqMaSnAdZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;104&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.19.55.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git status와 git log를 실행해 확인해 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.21.18.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lu4bm/btrU2KPCzjq/kWWz6xH0g3KfByrOFS5ONk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lu4bm/btrU2KPCzjq/kWWz6xH0g3KfByrOFS5ONk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lu4bm/btrU2KPCzjq/kWWz6xH0g3KfByrOFS5ONk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flu4bm%2FbtrU2KPCzjq%2FkWWz6xH0g3KfByrOFS5ONk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;720&quot; data-filename=&quot;스크린샷 2023-01-01 오후 11.21.18.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 Git Repository (깃 저장소)에 파일을 저장하고 변경사항을 추적하는 기본적인 방법에 대해 알아보았다.&lt;/p&gt;</description>
      <category>기타 개발 관련/Git</category>
      <category>git</category>
      <category>github</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/49</guid>
      <comments>https://ekko.tistory.com/49#entry49comment</comments>
      <pubDate>Sun, 1 Jan 2023 23:27:10 +0900</pubDate>
    </item>
    <item>
      <title>Git) Git이란?</title>
      <link>https://ekko.tistory.com/48</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Git-Logo-2Color.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUO9ti/btrVamNuVa4/kak5UsnAMQWTleam7VCnU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUO9ti/btrVamNuVa4/kak5UsnAMQWTleam7VCnU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUO9ti/btrVamNuVa4/kak5UsnAMQWTleam7VCnU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUO9ti%2FbtrVamNuVa4%2Fkak5UsnAMQWTleam7VCnU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;188&quot; data-filename=&quot;Git-Logo-2Color.png&quot; data-origin-width=&quot;910&quot; data-origin-height=&quot;380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언제 한번 꼭 정리해보고 싶었던 Git, Github 사용법.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.udemy.com/course/best-git-github/&quot;&gt;https://www.udemy.com/course/best-git-github/&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;강의를 들으면서 정리한 내용이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git을 처음 접해보는 분들은 이 강의를 꼭 들어봤으면 좋겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 스타트~!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Git&lt;/b&gt;은 가장 인기 있는&lt;b&gt; 버전 관리 시스템 (VSC: Version Control System)&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전 관리 시스템은 파일의 변화를 시간에 따라 추적하고 관리하는데 도움을 주는 소프트웨어로 작업 파일을 로컬 저장소뿐만 아니라 원격 저장소에도 배포해 저장할 수 있으며, 작업 이력을 관리하고 분기하여 원하는 시점으로 파일을 복원하거나 통합할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 버전의 파일을 다시 볼 수 있게 해 주고 버전들 간의 또는 파일들 간의 변화를 비교하고 되돌리고 다른 작업자와 공유할 수 있게 해 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git이 없다면 홈페이지에서 다운로드하여 설치하자.&lt;/p&gt;
&lt;figure id=&quot;og_1672576495134&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Git&quot; data-og-description=&quot;&quot; data-og-host=&quot;git-scm.com&quot; data-og-source-url=&quot;https://git-scm.com/&quot; data-og-url=&quot;https://git-scm.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nKxv3/hyQ6YbZIR5/gcCf6K0Kiq8MBU9olZIEwK/img.png?width=778&amp;amp;height=502&amp;amp;face=0_0_778_502&quot;&gt;&lt;a href=&quot;https://git-scm.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://git-scm.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nKxv3/hyQ6YbZIR5/gcCf6K0Kiq8MBU9olZIEwK/img.png?width=778&amp;amp;height=502&amp;amp;face=0_0_778_502');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Git&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;git-scm.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하는 맥북에는 Xcode를 설치하면 자동으로 Git이 설치되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에서 git version을 확인해 보자.&lt;/p&gt;
&lt;pre id=&quot;code_1672576649341&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-01-01 오후 9.37.56.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;72&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oA8pj/btrU1NZ3W0d/o6FnorQgVXmPZ3Ef4vQzJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oA8pj/btrU1NZ3W0d/o6FnorQgVXmPZ3Ef4vQzJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oA8pj/btrU1NZ3W0d/o6FnorQgVXmPZ3Ef4vQzJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoA8pj%2FbtrU1NZ3W0d%2Fo6FnorQgVXmPZ3Ef4vQzJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;72&quot; data-filename=&quot;스크린샷 2023-01-01 오후 9.37.56.png&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;72&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git을 설치했다면 Git에게 사용자 정보를 알려주기 위해 &lt;b&gt;user.name과&lt;/b&gt; &lt;b&gt;user.email&lt;/b&gt;을 설정하자. 언제든지 변경 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 Github 계정과 동일하게 설정해 주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1672576833725&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git config --global user.name &amp;lt;user-name&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1672576899608&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git config --global user.email &amp;lt;user-email&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(화살 괄호를 제외하고 입력하자)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1672577060373&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git config user.name&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git config user.name or git config user.email로 설정한 user.name과 user.email을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 설정 끝..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>기타 개발 관련/Git</category>
      <category>git</category>
      <category>github</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/48</guid>
      <comments>https://ekko.tistory.com/48#entry48comment</comments>
      <pubDate>Sun, 1 Jan 2023 21:53:59 +0900</pubDate>
    </item>
    <item>
      <title>iOS) then 사용법</title>
      <link>https://ekko.tistory.com/47</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Super sweet systactic sugar for Swift initializers 인 &lt;b&gt;Then&lt;/b&gt;을 사용해보자.&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1670517795365&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - devxoul/Then: ✨ Super sweet syntactic sugar for Swift initializers&quot; data-og-description=&quot;✨ Super sweet syntactic sugar for Swift initializers - GitHub - devxoul/Then: ✨ Super sweet syntactic sugar for Swift initializers&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/devxoul/Then&quot; data-og-url=&quot;https://github.com/devxoul/Then&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cY5h7r/hyQO9k7eIF/sMESVCXbwfNgqDRGT3B421/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/devxoul/Then&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/devxoul/Then&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cY5h7r/hyQO9k7eIF/sMESVCXbwfNgqDRGT3B421/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - devxoul/Then: ✨ Super sweet syntactic sugar for Swift initializers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;✨ Super sweet syntactic sugar for Swift initializers - GitHub - devxoul/Then: ✨ Super sweet syntactic sugar for Swift initializers&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CocoaPods과 SPM으로 추가 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용법은 매우 간단하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원래 이런 식으로 초기화했던 것을&lt;/p&gt;
&lt;pre id=&quot;code_1670518033564&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let label: UILabel = {
  let label = UILabel()
  label.textAlignment = .center
  label.textColor = .black
  label.text = &quot;Hello, World!&quot;
    
  return label
}()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 선언할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1670518085853&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let label = UILabel().then {
  $0.textAlignment = .center
  $0.textColor = .black
  $0.text = &quot;Hello, World!&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UIKit 뿐만이 아니라 &lt;b&gt;NSObject&lt;/b&gt;를 상속받는 모든 클래스에 사용 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1670518224310&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let queue = OperationQueue().then {
  $0.maxConcurrentOperationCount = 1
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1670518237640&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;extension MyType: Then {}

let instance = MyType().then {
  $0.really = &quot;awesome!&quot;
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1670518258036&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let newFrame = oldFrame.with {
  $0.size.width = 200
  $0.size.height = 100
}
newFrame.width // 200
newFrame.height // 100&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1670518416206&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;UserDefaults.standard.do {
  $0.set(&quot;devxoul&quot;, forKey: &quot;username&quot;)
  $0.set(&quot;devxoul@gmail.com&quot;, forKey: &quot;email&quot;)
  $0.synchronize()
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전까지는 UIKit 초기화 할때만 사용해왔는데 do나 , with도 활용해 봐야겠다. 가독성이 좋아 보인다.&lt;/p&gt;</description>
      <category>iOS</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/47</guid>
      <comments>https://ekko.tistory.com/47#entry47comment</comments>
      <pubDate>Fri, 9 Dec 2022 01:53:48 +0900</pubDate>
    </item>
    <item>
      <title>iOS) Error 추가 - Add Transport Security has blocked a cleartext HTTP connection to { ~ } since it is insecure ..</title>
      <link>https://ekko.tistory.com/46</link>
      <description>&lt;figure id=&quot;og_1666180344804&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;iOS) Error - Add Transport Security has blocked a cleartext HTTP connection to { ~ } since it is insecure ..&quot; data-og-description=&quot;OpenAPI를 사용하는데 다음과 같은 에러 메시지가 나왔다. Security 어쩌고 하는 거 보니까 보안 때문에 HTTP connection을 차단했다 한다. info.plist에서 App Transport Security Setting을 추가 후 하위에 All..&quot; data-og-host=&quot;ekko.tistory.com&quot; data-og-source-url=&quot;https://ekko.tistory.com/40&quot; data-og-url=&quot;https://ekko.tistory.com/40&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/LqoLO/hyP9xAtwLo/5GDuDPWGe273qvHusSY3M1/img.png?width=800&amp;amp;height=187&amp;amp;face=0_0_800_187,https://scrap.kakaocdn.net/dn/emjyjq/hyQbB1XdVI/3v1HCcDmYm1B9H7QRzfRmK/img.png?width=800&amp;amp;height=187&amp;amp;face=0_0_800_187,https://scrap.kakaocdn.net/dn/FeaIh/hyQazQYy7B/3K9bu2KpfafU5Ynxsf1i8k/img.png?width=1202&amp;amp;height=282&amp;amp;face=0_0_1202_282&quot;&gt;&lt;a href=&quot;https://ekko.tistory.com/40&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ekko.tistory.com/40&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/LqoLO/hyP9xAtwLo/5GDuDPWGe273qvHusSY3M1/img.png?width=800&amp;amp;height=187&amp;amp;face=0_0_800_187,https://scrap.kakaocdn.net/dn/emjyjq/hyQbB1XdVI/3v1HCcDmYm1B9H7QRzfRmK/img.png?width=800&amp;amp;height=187&amp;amp;face=0_0_800_187,https://scrap.kakaocdn.net/dn/FeaIh/hyQazQYy7B/3K9bu2KpfafU5Ynxsf1i8k/img.png?width=1202&amp;amp;height=282&amp;amp;face=0_0_1202_282');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;iOS) Error - Add Transport Security has blocked a cleartext HTTP connection to { ~ } since it is insecure ..&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;OpenAPI를 사용하는데 다음과 같은 에러 메시지가 나왔다. Security 어쩌고 하는 거 보니까 보안 때문에 HTTP connection을 차단했다 한다. info.plist에서 App Transport Security Setting을 추가 후 하위에 All..&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ekko.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 더 추가함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 에러가 나왔을 때,&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-16 오후 7.21.42.png&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;1190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b12oR3/btrOQpcEfbF/DGxhbwS7H3hKNdivZKcOf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b12oR3/btrOQpcEfbF/DGxhbwS7H3hKNdivZKcOf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b12oR3/btrOQpcEfbF/DGxhbwS7H3hKNdivZKcOf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb12oR3%2FbtrOQpcEfbF%2FDGxhbwS7H3hKNdivZKcOf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1246&quot; height=&quot;1190&quot; data-filename=&quot;스크린샷 2022-10-16 오후 7.21.42.png&quot; data-origin-width=&quot;1246&quot; data-origin-height=&quot;1190&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저번에 작성했던 글에서는 Info.plist에서 모든 도메인을 허용해 줬다. 모든 도메인을 허용해 준다니.. 딱 들어도 해주면 안 될 것 같다. 보안에 문제 생길 듯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 필요한 특정 도메인만 허용해주는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 info.plist에 추가해주자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-16 오후 7.20.59.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;1042&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zUFx1/btrO3VJQSS9/0ktxZFpW064KYebwoIsfkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zUFx1/btrO3VJQSS9/0ktxZFpW064KYebwoIsfkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zUFx1/btrO3VJQSS9/0ktxZFpW064KYebwoIsfkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzUFx1%2FbtrO3VJQSS9%2F0ktxZFpW064KYebwoIsfkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1394&quot; height=&quot;1042&quot; data-filename=&quot;스크린샷 2022-10-16 오후 7.20.59.png&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;1042&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>iOS</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/46</guid>
      <comments>https://ekko.tistory.com/46#entry46comment</comments>
      <pubDate>Wed, 19 Oct 2022 20:56:37 +0900</pubDate>
    </item>
    <item>
      <title>iOS) 프로젝트에 폰트 적용하기</title>
      <link>https://ekko.tistory.com/45</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;xcode 프로젝트에 폰트를 추가해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 원하는 폰트를 다운 받는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 Google Inter Font를 다운받았다.&lt;/p&gt;
&lt;figure id=&quot;og_1665750467996&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Google Fonts: Inter&quot; data-og-description=&quot;Inter is a variable font family carefully crafted &amp;amp; designed for computer screens. Inter features a tall x-height to aid in readability of mixed-case and lower-&quot; data-og-host=&quot;fonts.google.com&quot; data-og-source-url=&quot;https://fonts.google.com/specimen/Inter&quot; data-og-url=&quot;https://fonts.google.com/specimen/Inter&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bF2vHJ/hyP9lzrcXy/MIK72BspZwN7p2WubyjUI0/img.png?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260,https://scrap.kakaocdn.net/dn/wcm2Q/hyP9tjVMB4/K67iIsDkW034Bb54kv56k1/img.png?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260&quot;&gt;&lt;a href=&quot;https://fonts.google.com/specimen/Inter&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://fonts.google.com/specimen/Inter&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bF2vHJ/hyP9lzrcXy/MIK72BspZwN7p2WubyjUI0/img.png?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260,https://scrap.kakaocdn.net/dn/wcm2Q/hyP9tjVMB4/K67iIsDkW034Bb54kv56k1/img.png?width=2400&amp;amp;height=1260&amp;amp;face=0_0_2400_1260');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Google Fonts: Inter&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Inter is a variable font family carefully crafted &amp;amp; designed for computer screens. Inter features a tall x-height to aid in readability of mixed-case and lower-&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fonts.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.29.09.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;344&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UxUML/btrOClh0K2e/mmfmAAOuCyx91KmqBTgcuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UxUML/btrOClh0K2e/mmfmAAOuCyx91KmqBTgcuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UxUML/btrOClh0K2e/mmfmAAOuCyx91KmqBTgcuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUxUML%2FbtrOClh0K2e%2FmmfmAAOuCyx91KmqBTgcuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;246&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.29.09.png&quot; data-origin-width=&quot;700&quot; data-origin-height=&quot;344&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다운로드 파일을 보면&lt;b&gt; .ttf&lt;/b&gt; 파일이 있을것이다. 경우에 따라서는 &lt;b&gt;otf&lt;/b&gt; 파일도 있는데 적용 방법은 동일하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ttf 파일을 xcode 프로젝트에 추가해주자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가할때 Add to Target에 프로젝트를 꼭 체크해주자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.35.08.png&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGRLCG/btrODvRsdhI/KtaHFnDWRcUkffDt7T3TE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGRLCG/btrODvRsdhI/KtaHFnDWRcUkffDt7T3TE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGRLCG/btrODvRsdhI/KtaHFnDWRcUkffDt7T3TE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGRLCG%2FbtrODvRsdhI%2FKtaHFnDWRcUkffDt7T3TE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;449&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.35.08.png&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 추가하고 나서도 체크할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.36.15.png&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VP9SN/btrOCdEzNMT/QoseKeSbl7cJQldarKF7U0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VP9SN/btrOCdEzNMT/QoseKeSbl7cJQldarKF7U0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VP9SN/btrOCdEzNMT/QoseKeSbl7cJQldarKF7U0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVP9SN%2FbtrOCdEzNMT%2FQoseKeSbl7cJQldarKF7U0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;212&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.36.15.png&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Info.plist&lt;/b&gt;에서도 폰트를 추가해줘야한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Key는 Fonts provided by application&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Value는 폰트 파일명인데 확장자 (.ttf)까지 전부 입력해 줘야한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.39.10.png&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l4xPn/btrOCdLmlTT/d5JiTgK2BeyR5yiKZT86o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l4xPn/btrOCdLmlTT/d5JiTgK2BeyR5yiKZT86o0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l4xPn/btrOCdLmlTT/d5JiTgK2BeyR5yiKZT86o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl4xPn%2FbtrOCdLmlTT%2Fd5JiTgK2BeyR5yiKZT86o0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1330&quot; height=&quot;448&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.39.10.png&quot; data-origin-width=&quot;1330&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가된 폰트를 프로젝트에서 사용하기 위해서는 Xcode내부에서 폰트의 정확한 이름을 알아야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음의 코드를 통해 정확한 이름을 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 출처:&lt;a href=&quot;https://jerry-bakery.tistory.com/entry/iOS-%ED%8F%B0%ED%8A%B8-%EC%A0%81%EC%9A%A9%ED%95%98%EB%8A%94-%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;&amp;nbsp;jerry-bakery&lt;/b&gt;&lt;/a&gt;님 블로그&lt;/p&gt;
&lt;pre id=&quot;code_1665751396146&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;func checkFont() {
    for family in UIFont.familyNames {
        print(family)
        
        for sub in UIFont.fontNames(forFamilyName: family) {
            print(&quot;===&amp;gt; \(sub)&quot;)
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.45.28.png&quot; data-origin-width=&quot;1792&quot; data-origin-height=&quot;1234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BFthM/btrOCQV7xv4/ySDVj9jGkaRn5JfqJqbIwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BFthM/btrOCQV7xv4/ySDVj9jGkaRn5JfqJqbIwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BFthM/btrOCQV7xv4/ySDVj9jGkaRn5JfqJqbIwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBFthM%2FbtrOCQV7xv4%2FySDVj9jGkaRn5JfqJqbIwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1792&quot; height=&quot;1234&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.45.28.png&quot; data-origin-width=&quot;1792&quot; data-origin-height=&quot;1234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드를 실행 후 콘솔에서 원하는 폰트를 검색해 찾았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 폰트의 이름을 찾았으면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 적용 시켜주자.&lt;/p&gt;
&lt;pre id=&quot;code_1665751703255&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;myLabel.font = UIFont(name: &quot;Inter-Regular_Bold-Italic&quot;, size: 30)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.51.17.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/24xbS/btrOCYGp4ny/rVJF4zYEbcdMKDRzwhTWKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/24xbS/btrOCYGp4ny/rVJF4zYEbcdMKDRzwhTWKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/24xbS/btrOCYGp4ny/rVJF4zYEbcdMKDRzwhTWKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F24xbS%2FbtrOCYGp4ny%2FrVJF4zYEbcdMKDRzwhTWKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;828&quot; height=&quot;596&quot; data-filename=&quot;스크린샷 2022-10-14 오후 9.51.17.png&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;끝!&lt;/p&gt;</description>
      <category>iOS</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/45</guid>
      <comments>https://ekko.tistory.com/45#entry45comment</comments>
      <pubDate>Fri, 14 Oct 2022 21:51:38 +0900</pubDate>
    </item>
    <item>
      <title>iOS) UISheetPresentationController - Custom Detents로 Sheet 높이 설정하기(WWDC2022)</title>
      <link>https://ekko.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;기존 UISheetPresentationController에는 Detents가. medium과. large 뿐이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS16부터는 Custom Detents를 이용해 Sheet의 높이를 직접 설정해줄 수 있게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;직접 해보자. &lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2022/10068/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;WWDC2022 What's new in UIKit&lt;/a&gt;을 참고했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;높이 200인 Detent를 detents배열에 추가해 주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1665672690130&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sheet.detents = [
    .custom{ _ in
        200.0
    }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 23.53.48.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vpIG2/btrOxK843Xw/rHHoelHOKHNOrRUkKTK3Ck/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vpIG2/btrOxK843Xw/rHHoelHOKHNOrRUkKTK3Ck/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vpIG2/btrOxK843Xw/rHHoelHOKHNOrRUkKTK3Ck/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/vpIG2/btrOxK843Xw/rHHoelHOKHNOrRUkKTK3Ck/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;640&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 23.53.48.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최대 높이를 기준으로 높이를 설정할수도있다.&lt;/p&gt;
&lt;pre id=&quot;code_1665672931675&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sheet.detents = [
    .custom{ context in
        0.3 * context.maximumDetentValue
    }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Custom Detent에 identifier를 줘서 sheet의 다른 프로퍼티에서 사용할 수도 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1665673151888&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;extension UISheetPresentationController.Detent.Identifier {
    static let small = UISheetPresentationController.Detent.Identifier(&quot;small&quot;)
}

// Get a sheet
if let sheet = sheetView.sheetPresentationController {
    //Customize the sheet
    sheet.detents = [
        .custom(identifier: .small){ context in
            0.3 * context.maximumDetentValue
        }
    ]
    
    sheet.largestUndimmedDetentIdentifier = .small
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;identifier를 이용해 직접 Detent를 생성해서 사용할 수도 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1665673471909&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Create Detent
let smallDetent = UISheetPresentationController.Detent.custom(identifier: .small) { context in
    return 20
}
// Get a sheet
if let sheet = sheetView.sheetPresentationController {
    //Customize the sheet
    sheet.detents = [
        .large(),
        smallDetent
    ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-14 at 00.05.38.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tzWaY/btrOxL73emQ/DYJcSQIBF8ongOuqKUAEB1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tzWaY/btrOxL73emQ/DYJcSQIBF8ongOuqKUAEB1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tzWaY/btrOxL73emQ/DYJcSQIBF8ongOuqKUAEB1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/tzWaY/btrOxL73emQ/DYJcSQIBF8ongOuqKUAEB1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;640&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-14 at 00.05.38.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>iOS</category>
      <category>Custom Detent</category>
      <category>ios</category>
      <category>Sheet Height</category>
      <category>UISheetPresentationController</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/44</guid>
      <comments>https://ekko.tistory.com/44#entry44comment</comments>
      <pubDate>Fri, 14 Oct 2022 00:06:16 +0900</pubDate>
    </item>
    <item>
      <title>iOS) Buttom Sheet - UISheetPresentationController</title>
      <link>https://ekko.tistory.com/43</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;WWDC2021에서 나온 &lt;b&gt;UISheetPresentationController&lt;/b&gt;에 대해 알아보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식 문서의 예제와 영상을 보고 공부해 보았다.&lt;/p&gt;
&lt;figure id=&quot;og_1665628012797&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Customize and resize sheets in UIKit - WWDC21 - Videos - Apple Developer&quot; data-og-description=&quot;Discover how you can create a layered and customized sheet experience in UIKit. We'll explore how you can build a non-modal experience in...&quot; data-og-host=&quot;developer.apple.com&quot; data-og-source-url=&quot;https://developer.apple.com/videos/play/wwdc2021/10063/&quot; data-og-url=&quot;https://developer.apple.com/videos/play/wwdc2021/10063/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bQiPwN/hyP7Z4tXxc/B0tMVcscFIwavjVUDAbfwk/img.jpg?width=500&amp;amp;height=282&amp;amp;face=0_0_500_282&quot;&gt;&lt;a href=&quot;https://developer.apple.com/videos/play/wwdc2021/10063/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.apple.com/videos/play/wwdc2021/10063/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bQiPwN/hyP7Z4tXxc/B0tMVcscFIwavjVUDAbfwk/img.jpg?width=500&amp;amp;height=282&amp;amp;face=0_0_500_282');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Customize and resize sheets in UIKit - WWDC21 - Videos - Apple Developer&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Discover how you can create a layered and customized sheet experience in UIKit. We'll explore how you can build a non-modal experience in...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.apple.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Get Sheet&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 ViewController를 Navigation Controller에 Embed 하고 BarButtonItem을 추가해 주었다.&lt;/p&gt;
&lt;pre id=&quot;code_1665629450101&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import UIKit
import PhotosUI // PHPickerViewController

class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate, PHPickerViewControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        title = &quot;Custom Sheet&quot;
        navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(showImagePicker))
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UISheetPresentationController를 이용해 Sheet를 만들고 크기를 조정할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 Sheet를 생성해보자.&lt;/p&gt;
&lt;pre id=&quot;code_1665629092170&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@objc
func showImagePicker() {
    var configuration = PHPickerConfiguration()
    let picker = PHPickerViewController(configuration: configuration)
    picker.delegate = self
    
    // Get a sheet
    if let sheet = picker.sheetPresentationController {
        //Customize the sheet
    }
    present(picker, animated: true)
}

// Image를 선택을 마치면 호출
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    //dismiss(animated: true)
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;viewController의 sheetPresentationController라는 프로퍼티를 통해 sheet을 생성했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(예제에서는 PHPickerViewController를 sheet로 보여주는데 다른 viewController도 물론 가능하다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상태로 실행해서 버튼을 눌러보면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 11.52.47.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O35DF/btrOrSTYYqh/T3Pnj9rbpSZKUtdxAk8NNk/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O35DF/btrOrSTYYqh/T3Pnj9rbpSZKUtdxAk8NNk/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O35DF/btrOrSTYYqh/T3Pnj9rbpSZKUtdxAk8NNk/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/O35DF/btrOrSTYYqh/T3Pnj9rbpSZKUtdxAk8NNk/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;640&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 11.52.47.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sheet가 올라온다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 Sheet의 동작과 모양을 커스텀해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Detents&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Detent는 sheet가 놓일 수 있는 높이의 배열이다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-13 오전 11.56.46.png&quot; data-origin-width=&quot;4154&quot; data-origin-height=&quot;2914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHjEIi/btrOrdKM5OY/dRFUMNT1gGUoToTcStqZ2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHjEIi/btrOrdKM5OY/dRFUMNT1gGUoToTcStqZ2K/img.png&quot; data-alt=&quot;.medium&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHjEIi/btrOrdKM5OY/dRFUMNT1gGUoToTcStqZ2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHjEIi%2FbtrOrdKM5OY%2FdRFUMNT1gGUoToTcStqZ2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;2914&quot; data-filename=&quot;스크린샷 2022-10-13 오전 11.56.46.png&quot; data-origin-width=&quot;4154&quot; data-origin-height=&quot;2914&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;.medium&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-13 오전 11.56.56.png&quot; data-origin-width=&quot;4140&quot; data-origin-height=&quot;2912&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTa3Me/btrOqMNIHux/qUvX2Afen8apuqJ1UBdKZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTa3Me/btrOqMNIHux/qUvX2Afen8apuqJ1UBdKZ0/img.png&quot; data-alt=&quot;.large&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTa3Me/btrOqMNIHux/qUvX2Afen8apuqJ1UBdKZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTa3Me%2FbtrOqMNIHux%2FqUvX2Afen8apuqJ1UBdKZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;300&quot; height=&quot;2912&quot; data-filename=&quot;스크린샷 2022-10-13 오전 11.56.56.png&quot; data-origin-width=&quot;4140&quot; data-origin-height=&quot;2912&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;.large&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본값으로. large만 설정되어있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sheet의 detents 배열에 medium을 추가해 보았다.&lt;/p&gt;
&lt;pre id=&quot;code_1665630702776&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if let sheet = picker.sheetPresentationController {
    //Customize the sheet
    sheet.detents = [
        .medium(),
        .large()
    ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.27.12.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAGMhd/btrOqBlri8v/xmZWvO9yt0vXwESFUCnl9k/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAGMhd/btrOqBlri8v/xmZWvO9yt0vXwESFUCnl9k/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAGMhd/btrOqBlri8v/xmZWvO9yt0vXwESFUCnl9k/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bAGMhd/btrOqBlri8v/xmZWvO9yt0vXwESFUCnl9k/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;640&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.27.12.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iOS16부터는 Custom Detent를 만들어 원하는 높이의 Sheet를 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a href=&quot;https://ekko.tistory.com/44&quot;&gt;iOS) UISheetPresentationController - Custom Detents로 Sheet 높이 설정하기(WWDC2022)&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;prefersScrollingExpandsWhenScrolledToEdge&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 PHPickerViewController에 선택 가능한 이미지가 많을 경우에 스크롤을 해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 위의 화면처럼 아래에서 위로 스크롤을 하면 Sheet의 Detent가 large로 바뀌어 버린다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 prefersScrollingExpandsWhenScrolledToEdge 프로퍼티를 false로 설정해 주면 스크롤 시 sheet가 확장되는 것을 막아준다.&lt;/p&gt;
&lt;pre id=&quot;code_1665631885212&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sheet.prefersScrollingExpandsWhenScrolledToEdge = false&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 프로퍼티의 기본값은 true로 이때 가장 큰 detent에 도달해야만 sheet 내부 스크롤이 가능하자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.34.40.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/et79oV/btrOqULxjHc/vy3hkoAtdAWB0wZDSCiCUK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/et79oV/btrOqULxjHc/vy3hkoAtdAWB0wZDSCiCUK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/et79oV/btrOqULxjHc/vy3hkoAtdAWB0wZDSCiCUK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/et79oV/btrOqULxjHc/vy3hkoAtdAWB0wZDSCiCUK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;640&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.34.40.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;selectedDetentIdentifier&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;selectedDetentIdentifier를 코드로 직접 호출해 detent를 변경해줄 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드는 PHPicker에서 이미지를 선택했을 때 detent를 medium으로 변경해준다.&lt;/p&gt;
&lt;pre id=&quot;code_1665632257248&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 이미지 선택을 종료했을때 호출
func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    if let sheet = picker.sheetPresentationController {
        sheet.selectedDetentIdentifier = .medium // detent 변경
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.39.37.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nCFfs/btrOsaNFiPw/xeEguvIdHaPkeOF4ktC9Ak/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nCFfs/btrOsaNFiPw/xeEguvIdHaPkeOF4ktC9Ak/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nCFfs/btrOsaNFiPw/xeEguvIdHaPkeOF4ktC9Ak/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/nCFfs/btrOsaNFiPw/xeEguvIdHaPkeOF4ktC9Ak/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;640&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.39.37.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;animateChanges&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;animation을 추가해 부드럽게 바꿔줄 수도 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1665632561152&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;func picker(_ picker: PHPickerViewController, didFinishPicking results: [PHPickerResult]) {
    if let sheet = picker.sheetPresentationController {
        sheet.animateChanges {
            sheet.selectedDetentIdentifier = .medium
        }
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.41.38.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8Xg9z/btrOtIJWBaJ/kamugTnjl5VeaabJKTyZ71/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8Xg9z/btrOtIJWBaJ/kamugTnjl5VeaabJKTyZ71/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8Xg9z/btrOtIJWBaJ/kamugTnjl5VeaabJKTyZ71/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/b8Xg9z/btrOtIJWBaJ/kamugTnjl5VeaabJKTyZ71/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;640&quot; data-filename=&quot;Simulator Screen Recording - iPhone 14 - 2022-10-13 at 12.41.38.gif&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;largestUndimmedDetentIdentifier&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지금까지 실행 화면들을 보면 sheet가 나올 때 뒤의 View가 어둡게(dim) 변한다. &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;largestUndimmedDetentIdentifier 프로퍼티를 이용해 뒤의 view를 어둡지 않게 하는 최대 Detent를 설정할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1665633075956&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sheet.largestUndimmedDetentIdentifier = .medium&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;simulator_screenshot_3BD74B49-FBE1-4645-8AC9-4F288A24F559.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7P97o/btrOrST6IGi/pvCkv1AsUcy4LkLOjgpnJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7P97o/btrOrST6IGi/pvCkv1AsUcy4LkLOjgpnJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7P97o/btrOrST6IGi/pvCkv1AsUcy4LkLOjgpnJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7P97o%2FbtrOrST6IGi%2FpvCkv1AsUcy4LkLOjgpnJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;2532&quot; data-filename=&quot;simulator_screenshot_3BD74B49-FBE1-4645-8AC9-4F288A24F559.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 프로퍼티들 외에도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Sheet 상단에 Grabber를 보이는 prefersGrabberVisible, Sheet에 CornerRadius를 주는 preferredCornerRadius 등이 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;simulator_screenshot_ACE06BAE-A679-463F-8383-9351B60F3311.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKTy3d/btrOqM8cszD/B1eD0ZCQkUodA4O4psCQ71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKTy3d/btrOqM8cszD/B1eD0ZCQkUodA4O4psCQ71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKTy3d/btrOqM8cszD/B1eD0ZCQkUodA4O4psCQ71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKTy3d%2FbtrOqM8cszD%2FB1eD0ZCQkUodA4O4psCQ71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;296&quot; height=&quot;2532&quot; data-filename=&quot;simulator_screenshot_ACE06BAE-A679-463F-8383-9351B60F3311.png&quot; data-origin-width=&quot;1170&quot; data-origin-height=&quot;2532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Delegate&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UISheetPresentationController는 UIPresentationController를 상속받고 있어 UIPresentationControllerDelegate 메서드도 사용 가능하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-10-14 오전 1.07.45.png&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;252&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wZr8P/btrOxSzjDaT/bEKYD67oyN4ttghOOY1CM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wZr8P/btrOxSzjDaT/bEKYD67oyN4ttghOOY1CM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wZr8P/btrOxSzjDaT/bEKYD67oyN4ttghOOY1CM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwZr8P%2FbtrOxSzjDaT%2FbEKYD67oyN4ttghOOY1CM0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1476&quot; height=&quot;252&quot; data-filename=&quot;스크린샷 2022-10-14 오전 1.07.45.png&quot; data-origin-width=&quot;1476&quot; data-origin-height=&quot;252&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1665677140638&quot; class=&quot;swift&quot; data-ke-language=&quot;swift&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// Sheet의 Detent가 바뀌면 호출
func sheetPresentationControllerDidChangeSelectedDetentIdentifier(_ sheetPresentationController: UISheetPresentationController) {
    print(&quot;sheetPresentationControllerDidChangeSelectedDetentIdentifier&quot;)
}

// UIPresentationController
// Sheet가 dismiss될때 호출
func presentationControllerWillDismiss(_ presentationController: UIPresentationController) {
    print(&quot;PresentationControllerWillDismiss&quot;)
    self.view.backgroundColor = .white
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 sheetPresentationController에 대해서 정리해 보았다. 직접 프로젝트에 적용시켜 보면서 더 공부해 봐야겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 WWDC22에서 나온 내용들 얼른 공부해봐야지 ㅠ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>iOS</category>
      <category>bottom sheet</category>
      <category>ios</category>
      <category>SHEET</category>
      <category>sheetPresentationController</category>
      <author>Ekko0701</author>
      <guid isPermaLink="true">https://ekko.tistory.com/43</guid>
      <comments>https://ekko.tistory.com/43#entry43comment</comments>
      <pubDate>Thu, 13 Oct 2022 13:02:30 +0900</pubDate>
    </item>
  </channel>
</rss>