<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>브래드의 메모장</title>
    <link>https://bradheo.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sat, 22 Aug 2026 11:40:17 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Brad_Heo</managingEditor>
    <image>
      <title>브래드의 메모장</title>
      <url>https://tistory1.daumcdn.net/tistory/3193243/attach/0e97d84d4de44283a6fae946926ea6ba</url>
      <link>https://bradheo.tistory.com</link>
    </image>
    <item>
      <title>개인정보처리방침</title>
      <link>https://bradheo.tistory.com/entry/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EB%B0%A9%EC%B9%A8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;'기프트킵&amp;rsquo;는 개인정보보호법에 따라 이용자들의 개인정보 보호 및 권익을 보호하고자 다음과 같은 처리방침을 두고 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사는 개인정보처리방침을 개정하는 경우 앱 화면 및 웹사이트 공지사항을 통하여 공지할 것입니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1.개인정보의 처리 목적 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사에서 개인정보를 별도로 저장하거나 이용하지 않습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;개인정보 파일 현황&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사는 별도의 개인정보 파일을 사용하지 않으며 저장하지도 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사는 쿠키를 저장하지 않으며 이용하지 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이용자가 이에 대해 의문이 있다면 해당 서비스(애플 및, 각 광고 미디어)로 직접 연락해야 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;개인정보의 처리 및 보유기간&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사는 개인정보를 직접적으로 저장하거나 보유하지 않습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;따라서 당사는 이용자의 개인정보를 처리하는 내용도 보유기간도 없습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4.개인정보의 제3자 제공에 관한 사항&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사는 개인정보를 제3자에게 제공하지 않고 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5.개인정보처리 위탁&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사는 개인정보를 위탁하고 있지 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;6.정보주체의 권리, 의무 및 그 행사방법&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이용자는 개인정보주체로서 권리 행사할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1) 개인정보 열람요구&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2) 오류 등이 있을 경우 정정 요구&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3) 삭제요구&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4) 처리 정지 요구&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사는 개인정보를 저장하거나 위탁하지 않습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;7.개인정보의 파기&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;당사의 어플리케이션은 독립 실행 방식의 어플리케이션으로 별도의 서버를 사용하지 않고있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;또한 개인정보를 저장하지 않으므로 파기할 것이 없습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그러나 사용자가 원할 경우 어플리케이션을 '삭제'함으로서 모든 데이터를 파기할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal; color: #000000;&quot;&gt;타사 모듈 사용에 대한 안내&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;탑재된 타사 서비스 모듈은 다음과 같습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Lottie&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;제공 회사：Airbnb&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이용 목적：애니메이션 렌더링 및 적용&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;제공 항목 : 없습니다.&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;​&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;9.개인정보 보호책임자 작성&lt;/p&gt;
&lt;p style=&quot;color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;본 개인정보처리정책에 대해 궁금하신 사항이 있거나, 개인정보 처리절차에 대한 질문, 의견 또는 우려가 있을 경우 아래 연락처로 연락 주시기 바랍니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #212529; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #000000;&quot;&gt;이메일 : brad65.heo@gmail.com&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/117</guid>
      <comments>https://bradheo.tistory.com/entry/%EA%B0%9C%EC%9D%B8%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EB%B0%A9%EC%B9%A8#entry117comment</comments>
      <pubDate>Fri, 10 Apr 2026 23:26:13 +0900</pubDate>
    </item>
    <item>
      <title>iOS) 앱 배포 - 빠른(긴급) 심사</title>
      <link>https://bradheo.tistory.com/entry/iOS-%EC%95%B1-%EB%B0%B0%ED%8F%AC-%EB%B9%A0%EB%A5%B8%EA%B8%B4%EA%B8%89-%EC%8B%AC%EC%82%AC</link>
      <description>&lt;p&gt;iOS 앱 배포는 보통 하루 24시간 걸린다.&lt;br&gt;다만 빠른(긴급)심사를 이용할 경우 1~3시간 이내(앱 마다 다를 수도..)에 앱 배포가 가능해진 상태로 된다.&lt;/p&gt;
&lt;h2&gt;주의사항&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;p&gt;참고: 평균적으로 제출물의 90%는 24시간 이내에 검토됩니다. 그러나 중요한 버그를 수정하거나 이벤트에 맞춰 앱을 출시하는 등의 불가피한 상황에 직면한 경우 이 양식을 작성하여 신속한 검토를 요청할 수 있습니다. 참고하시기 바랍니다:  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;앱 리뷰로 전송된 제출물만 신속하게 처리할 수 있습니다.  &lt;/li&gt;
&lt;li&gt;과도한 신속 요청을 제출하면 향후 신속 요청이 승인되지 않을 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;-&amp;gt; 한번 앱 빠른 심사 등록하면 다시 등록 안해도 빠른 심사로 등록되는 것 같다. 그리고 계속 빠른 심사 요청하면 거부할 수 도 있으니, 해당 심사 요청 시 주의가 필요하다.&lt;/p&gt;
&lt;h2&gt;방법&lt;/h2&gt;
&lt;p&gt;순서&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;애플 개발자 계정 사이트 &lt;a href=&quot;https://developer.apple.com/account&quot;&gt;https://developer.apple.com/account&lt;/a&gt; 방문&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;맨 아래로 스크롤 &amp;quot;지원&amp;quot; -&amp;gt; &amp;quot;문의하기&amp;quot; 클릭&lt;br&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/976440e1-bad5-44eb-be55-1c8bb45530ee&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;quot;앱 심사&amp;quot; 메뉴 클릭 후 &amp;quot;빠른 앱 심사 요청&amp;quot; 클릭&lt;br&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/ea61676a-9b72-4eb7-a6cd-11210c4663ba&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;quot;앱 심사 팀에 연락&amp;quot; 메뉴 클릭&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;자동으로 입력되어 있는 정보 확인 후 하단에 &amp;quot;앱 정보&amp;quot;에서 심사할 앱 정보 선택 후 &amp;quot;보내기&amp;quot; 클릭&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>iOS/iOS</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/116</guid>
      <comments>https://bradheo.tistory.com/entry/iOS-%EC%95%B1-%EB%B0%B0%ED%8F%AC-%EB%B9%A0%EB%A5%B8%EA%B8%B4%EA%B8%89-%EC%8B%AC%EC%82%AC#entry116comment</comments>
      <pubDate>Mon, 16 Dec 2024 16:17:57 +0900</pubDate>
    </item>
    <item>
      <title>iOS) Universal link</title>
      <link>https://bradheo.tistory.com/entry/Swift-Universal-link</link>
      <description>&lt;p&gt;웹에서 앱을 호출해야할 경우가 있을 떄 사용&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ex) 웹 배너 광고 - 광고 클릭 시 설치 페이지 또는 앱 이동&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;준비해야할 것&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;AASA 파일&lt;/li&gt;
&lt;li&gt;Capability&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;1. AASA (apple-app-site-association)&lt;/h3&gt;
&lt;p&gt;파일 추가 위치&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;서비스 중인 웹서버의 특정 폴더 내 위치 시켜야함&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://test,com/.well-known/apple-app-site-association&quot;&gt;https://test,com/.well-known/apple-app-site-association&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;파일 예시&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;{
    &amp;quot;applinks&amp;quot;: {
        &amp;quot;apps&amp;quot;: [],
        &amp;quot;details&amp;quot;: [
            {
                &amp;quot;appIDs&amp;quot;: [
                    &amp;quot;ABTWV6HNWN.com.tmonet.BubiNFC&amp;quot;
                ],
                &amp;quot;components&amp;quot;: [
                    {
                        &amp;quot;/&amp;quot;: &amp;quot;/ test/*&amp;quot;,
                        &amp;quot;comment&amp;quot;: &amp;quot;Matches any URL whose path is /test/* and instructs the system to open it as a Universal link&amp;quot;
                    },
                    {
                        &amp;quot;/&amp;quot;: &amp;quot;/event/*&amp;quot;,
                        &amp;quot;exclude&amp;quot;: true,
                        &amp;quot;comment&amp;quot;: &amp;quot;Matches any URL whose path is /event/* and instructs thw system NOT to open it as a Universal link&amp;quot;
                    }
                ]
            }
        ]
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;appIDs - 팀 ID + Bundle ID&lt;br&gt;components - &amp;quot;/&amp;quot;값에 특정 path값에만 실행 시키거나, 동작되지 못하게 설정(모든 URL을 허용한다면 `&amp;quot;*&amp;quot;)&lt;/p&gt;
&lt;h3&gt;2. Capability&lt;/h3&gt;
&lt;p&gt;Xcode - TARGETS -&amp;gt; Signing &amp;amp; Capabilities -&amp;gt; Associated Domains&lt;/p&gt;
&lt;p&gt;도메인 설정&lt;br&gt;ex) applinks:test.com, applinks:testsite.com&lt;/p&gt;
&lt;h2&gt;테스트&lt;/h2&gt;
&lt;p&gt;AASA 파일 등록 후 Domain까지 등록되면 테스트 가능&lt;/p&gt;
&lt;p&gt;주의사항&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Apple CDN에 등록되어야 테스트 가능&lt;ul&gt;
&lt;li&gt;등록 되어있는지 확인 방법 - &lt;a href=&quot;https://app-site-association.cdn-apple.com/a/v1/dev-daem.t-monet.com&quot;&gt;링크&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;링크 클릭 후 맨 뒤 path값 등록한 domain으로 설정&lt;ul&gt;
&lt;li&gt;ex) &lt;code&gt;https://app-site-association.cdn-apple.com/a/v1/test.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;웹서버에 새로운 AASA파일을 새로 반영한다고 해도, Apple CDN도 업데이트 되지 않음. 확실하진 않지만, 하루에 한 번 업데이트 되는 것 같음.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Apple CDN에 등록 전 테스트 방법&lt;ul&gt;
&lt;li&gt;웹서버에 수정된 AASA파일이 반영되어 있는지 확인&lt;/li&gt;
&lt;li&gt;Domain 등록할떄 모드 설정&lt;ul&gt;
&lt;li&gt;ex) applinks:test.com?mode=developer&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;웹서버 AASA 파일 반영 확인 사이트&lt;br&gt;&lt;a href=&quot;https://branch.io/resources/aasa-validator/&quot;&gt;https://branch.io/resources/aasa-validator/&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;참고 사이트&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.associated-domains&quot;&gt;https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.associated-domains&lt;/a&gt;&lt;/p&gt;</description>
      <category>iOS/iOS</category>
      <category>universal link</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/115</guid>
      <comments>https://bradheo.tistory.com/entry/Swift-Universal-link#entry115comment</comments>
      <pubDate>Thu, 12 Dec 2024 13:04:47 +0900</pubDate>
    </item>
    <item>
      <title>Git) `fatal: pathspec '.....FIRAnalytics.h' is beyond a symbolic link` 에러 해결</title>
      <link>https://bradheo.tistory.com/entry/Git-fatal-pathspec-FIRAnalyticsh-is-beyond-a-symbolic-link-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0</link>
      <description>&lt;p&gt;cocoaPods 라이브러리 업데이트 후 git으로 업로드 하려고 했지만 아래와 같은 오류 메시지가 나왔다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;fatal: pathspec &amp;#39;Pods/FirebaseAnalytics/Frameworks/FirebaseAnalytics.xcframework/macos-arm64_x86_64/FirebaseAnalytics.framework/Headers/FIRAnalytics.h&amp;#39; is beyond a symbolic link&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;해결 방법&lt;/p&gt;
&lt;p&gt;git commit 시 GUI를 쓰는데, GUI 사용 전 터미널에 &lt;code&gt;git add .&lt;/code&gt;를 하면 정상적으로 push가 된다.&lt;/p&gt;
&lt;p&gt;참고 자료&lt;br&gt;&lt;a href=&quot;https://github.com/firebase/firebase-ios-sdk/issues/12801&quot;&gt;https://github.com/firebase/firebase-ios-sdk/issues/12801&lt;/a&gt;&lt;/p&gt;</description>
      <category>Tool/Git</category>
      <category>beyond a symbolic link</category>
      <category>CocoaPods</category>
      <category>fatal</category>
      <category>GIT</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/114</guid>
      <comments>https://bradheo.tistory.com/entry/Git-fatal-pathspec-FIRAnalyticsh-is-beyond-a-symbolic-link-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0#entry114comment</comments>
      <pubDate>Thu, 18 Jul 2024 10:01:17 +0900</pubDate>
    </item>
    <item>
      <title>UserInterfaceState.xcuserstate 제거</title>
      <link>https://bradheo.tistory.com/entry/UserInterfaceStatexcuserstate-%EC%A0%9C%EA%B1%B0</link>
      <description>&lt;p&gt;git으로 코드 관리 시 코드 변경을 안했음에도 UserInterfaceState.xcuserstate 파일 변경되었다고 경고가 나온다.&lt;/p&gt;
&lt;p&gt;브랜치를 변경한다거나 머지할때 거슬린다. &lt;/p&gt;
&lt;h3&gt;UserInterfaceState.xcuserstate란 무엇일까?&lt;/h3&gt;
&lt;p&gt;-&amp;gt; &lt;code&gt;UI 상태를 저장하고 있는 파일&lt;/code&gt;이다. 특별히 쓰임새가 없기에 제거해도 문제가 없다.&lt;/p&gt;
&lt;h3&gt;제거하는 방법&lt;/h3&gt;
&lt;h4&gt;명령어&lt;/h4&gt;
&lt;p&gt;터미널에 아래 명령어 입력한다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;git rm --cached [Project Name].xcworkspace/xcuserdata/[User Name].xcuserdatad/UserInterfaceState.xcuserstate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;성공적으로 삭제되면 해당 변경사항을 commit 한다.&lt;/p&gt;
&lt;h4&gt;gitignor&lt;/h4&gt;
&lt;p&gt;gitignor에 아래 내용 추가&lt;/p&gt;
&lt;p&gt;&lt;code&gt;*.xcuserstate&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;본인은 제대로 적용이 안되는건지, 동일한 현상이 나왔다.&lt;/p&gt;</description>
      <category>Tool/Git</category>
      <category>GIT</category>
      <category>UserInterfaceState.xcuserstate</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/113</guid>
      <comments>https://bradheo.tistory.com/entry/UserInterfaceStatexcuserstate-%EC%A0%9C%EA%B1%B0#entry113comment</comments>
      <pubDate>Wed, 17 Jul 2024 15:36:04 +0900</pubDate>
    </item>
    <item>
      <title>Swift) Info.plist 현지화(Localized)</title>
      <link>https://bradheo.tistory.com/entry/Swift-infoplist-%ED%98%84%EC%A7%80%ED%99%94Localized</link>
      <description>&lt;p&gt;Swift는 앱 내 성공, 에러 메세지에 대해서 Localized 가능합니다. 또한 권한 설정에 대해서 알아 봅시다.&lt;/p&gt;
&lt;h3&gt;순서&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Localized 설정&lt;/li&gt;
&lt;li&gt;InfoPlist.string 파일 만들기&lt;/li&gt;
&lt;li&gt;Info.plist 권한 설정 Key값 확인&lt;/li&gt;
&lt;li&gt;InfoPlist.string 문구 추가&lt;/li&gt;
&lt;li&gt;적용&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;1. Localized 설정&lt;/h3&gt;
&lt;p&gt;PROJECT 설정 -&amp;gt; Localizations -&amp;gt; 원하는 언어 선택&lt;/p&gt;
&lt;h3&gt;2. infoPlist.string 파일 만들기&lt;/h3&gt;
&lt;p&gt;File -&amp;gt; string 파일형식 검색 -&amp;gt; 파일명 &lt;code&gt;InfoPlist&lt;/code&gt;로 만듬&lt;/p&gt;
&lt;h3&gt;3. Info.plist 권한 설정 Key 값 확인&lt;/h3&gt;
&lt;p&gt;Info.plist 우클릭 -&amp;gt; Open As -&amp;gt; Source Code -&amp;gt; key string값 확인&lt;/p&gt;
&lt;p&gt;앨범 선택인 경우 &lt;code&gt;NSPhotoLibraryUsageDescription&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/989c6d60-2906-46d8-9c86-686537fc8b6a&quot; alt=&quot;스크린샷 2024-07-16 오전 9 19 13&quot;&gt;&lt;/p&gt;
&lt;h3&gt;4. InfoPlist.string 문구 추가&lt;/h3&gt;
&lt;p&gt;Key값 확인 후 string파일에 원하는 문구 작성&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;테스트를 위한 문구 이기에 좀 더 명확하게 작성해야함.(리젝 사유)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;InfoPlist.string(Korea)&lt;/code&gt;파일&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;NSPhotoLibraryUsageDescription = &amp;quot;앨범 접근 권한&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;InfoPlist.string(English)&lt;/code&gt;파일&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;NSPhotoLibraryUsageDescription = &amp;quot;Album Access Auth&amp;quot;;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;적용&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;Ko&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;En&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/5cc918f3-36ec-4bfa-8b19-b9e381471daf&quot; width=&quot;300&quot; height=&quot;700&quot;&gt;&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/c7c6aa7b-2434-4ba8-a957-04e5a679757e&quot; width=&quot;300&quot; height=&quot;700&quot;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;</description>
      <category>iOS/Swift</category>
      <category>info.plist</category>
      <category>localized</category>
      <category>SWiFT</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/112</guid>
      <comments>https://bradheo.tistory.com/entry/Swift-infoplist-%ED%98%84%EC%A7%80%ED%99%94Localized#entry112comment</comments>
      <pubDate>Tue, 16 Jul 2024 09:31:32 +0900</pubDate>
    </item>
    <item>
      <title>Objective-C) present ViewController</title>
      <link>https://bradheo.tistory.com/entry/Objective-C-present-ViewController</link>
      <description>&lt;p&gt;completion: nil&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;#import &amp;quot;myViewController.h&amp;quot;

@property (nonatomic, retain) myViewController       *myViewController;

    ...

    _myViewController = [[myViewController alloc] init];

    [self presentViewController: _myViewController animated:YES completion: nil];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;completion: nil != nil&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;#import &amp;quot;myViewController.h&amp;quot;

@property (nonatomic, retain) myViewController       *myViewController;

    ...

    _myViewController = [[myViewController alloc] init];

    [self presentViewController: _myViewController animated:YES completion: ^{ 

    }];
&lt;/code&gt;&lt;/pre&gt;</description>
      <category>iOS/Objective-C</category>
      <category>Objective-C</category>
      <category>presentviewcontroller</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/111</guid>
      <comments>https://bradheo.tistory.com/entry/Objective-C-present-ViewController#entry111comment</comments>
      <pubDate>Mon, 1 Jul 2024 10:43:46 +0900</pubDate>
    </item>
    <item>
      <title>Objective-C) 생체인증타입 확인</title>
      <link>https://bradheo.tistory.com/entry/Objective-C-%EC%83%9D%EC%B2%B4%EC%9D%B8%EC%A6%9D%ED%83%80%EC%9E%85-%ED%99%95%EC%9D%B8</link>
      <description>&lt;p&gt;아래의 함수로 True 시 Face ID, False 시 지문으로 설정하면 된다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;#import &amp;quot;LocalAuthentication/LAContext.h&amp;quot;

- (BOOL)checkAuthType {
    LAContext *context = [[LAContext alloc] init];

    if (context.biometryType == LABiometryTypeFaceID) {
        return YES;
    } else {
        return NO;
    }
}&lt;/code&gt;&lt;/pre&gt;</description>
      <category>iOS/Objective-C</category>
      <category>Objective-C</category>
      <category>생체인증 타입 확인</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/110</guid>
      <comments>https://bradheo.tistory.com/entry/Objective-C-%EC%83%9D%EC%B2%B4%EC%9D%B8%EC%A6%9D%ED%83%80%EC%9E%85-%ED%99%95%EC%9D%B8#entry110comment</comments>
      <pubDate>Fri, 21 Jun 2024 15:29:53 +0900</pubDate>
    </item>
    <item>
      <title>Objective-C) 클래스 객체함수 호출하기</title>
      <link>https://bradheo.tistory.com/entry/Objective-C-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4%ED%95%A8%EC%88%98-%ED%98%B8%EC%B6%9C%ED%95%98%EA%B8%B0</link>
      <description>&lt;p&gt;Objective-C에서 다른 객체에서 함수를 실행시키는 방법은 swift와 미묘한 차이점이 있습니다.&lt;/p&gt;
&lt;p&gt;간단하게 정리해보았습니다.&lt;/p&gt;
&lt;p&gt;ViewController를 생성해봅시다.&lt;/p&gt;
&lt;p&gt;이름은 MyViewController 지정했습니다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;MyViewController.m&lt;/code&gt;파일과 &lt;code&gt;MyViewController.h&lt;/code&gt;파일이 생깁니다.&lt;/p&gt;
&lt;img width=&quot;393&quot; alt=&quot;스크린샷 2024-06-20 오전 8 39 48&quot; src=&quot;https://github.com/bradheo65/SwiftUIFirebaseChat/assets/45350356/e96679e1-d92b-46d0-8a35-0a853d3d7fe0&quot;&gt;

&lt;p&gt;먼저 m파일에 함수를 작성해 봅시다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;- (void)testAction {
    NSLog(@&amp;quot;testAction&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;그 다음 h파일로 가서 해당 함수를 등록해 봅시다.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;@interface MyViewController : UIViewController

-(void)testAction;

@end&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이제 메인 ViewController로 가서 동작시켜봅시다.&lt;/p&gt;
&lt;p&gt;저는 &lt;code&gt;viewDidLoad&lt;/code&gt;에 동작시켜볼게요.&lt;/p&gt;
&lt;p&gt;코드는 간단합니다. 해당 사용할 객체를 초기화하고 함수를 실행시키면 됩니다.&lt;br&gt;그리고 맨위에 &lt;code&gt;MyViewController.h&lt;/code&gt;를 import를 했는데, swift와는 다르게 import를 해줘야지만 접근이 가능합니다..&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-swift&quot;&gt;#import &amp;quot;MyViewController.h&amp;quot;

- (void)viewDidLoad {
    [super viewDidLoad];

    MyViewController *myViewController = [[MyViewController alloc] init];

    [myViewController testAction];&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;출력결과&lt;/p&gt;
&lt;p&gt;&lt;code&gt;2024-06-20 08:34:17.538181+0900 TestAction[9817:1821362] testAction&lt;/code&gt; &lt;/p&gt;</description>
      <category>iOS/Objective-C</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/109</guid>
      <comments>https://bradheo.tistory.com/entry/Objective-C-%ED%81%B4%EB%9E%98%EC%8A%A4-%EA%B0%9D%EC%B2%B4%ED%95%A8%EC%88%98-%ED%98%B8%EC%B6%9C%ED%95%98%EA%B8%B0#entry109comment</comments>
      <pubDate>Thu, 20 Jun 2024 08:42:45 +0900</pubDate>
    </item>
    <item>
      <title>트러블슈팅) Thread 1: &amp;quot;Unable to activate constraint with anchors....</title>
      <link>https://bradheo.tistory.com/entry/Thread-1-Unable-to-activate-constraint-with-anchors</link>
      <description>&lt;p&gt;코드로 UI 작업 시 발생한 에러 메세지&lt;/p&gt;
&lt;p&gt;에러 메세지&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Thread 1: &amp;quot;Unable to activate constraint with anchors &amp;lt;NSLayoutDimension:0x280310780 \&amp;quot;UILabel:0x10450aa60.width\&amp;quot;&amp;gt; and &amp;lt;NSLayoutDimension:0x2803107c0 \&amp;quot;UIView:0x10450b200.width\&amp;quot;&amp;gt; because they have no common ancestor. Does the constraint or its anchors reference items in different view hierarchies? That&amp;#39;s illegal.&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;번역&lt;/p&gt;
&lt;p&gt;&lt;code&gt;스레드 1: &amp;quot;앵커 &amp;lt;NSLayoutXAxisAnchor:0x3034d7040 \&amp;quot;UIView:0x108926da0.leading\&amp;quot;&amp;gt; 및 &amp;lt;NSLayoutXAxisAnchor:0x3034d6f80 \&amp;quot;UIView:0x108926940.leading\&amp;quot;을 사용하여 제약 조건을 활성화할 수 없습니다. 공통 조상이 없기 때문에 제약 조건이나 앵커가 다른 뷰 계층의 항목을 참조합니까? 그것은 불법입니다.&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;먼가 제약조건이 안맞고, 앵커 잡는 뷰계층이 꼬인 것 같다.&lt;/p&gt;
&lt;p&gt;이럴 땐 바로 구글검색...&lt;/p&gt;
&lt;p&gt;다행히 나만 발생된 에러가 아니였다.&lt;/p&gt;
&lt;p&gt;스택오버플로우에서 답변을 쉽게 찾을 수 있었다.&lt;/p&gt;
&lt;p&gt;요약하자면,, 먼저 addView를 하고 Layout을 잡으라는 의미 -&amp;gt; 현재 내 코드가 Layout을 잡고 addView를 한 상황이다.&lt;/p&gt;
&lt;p&gt;바로 적용해보자..&lt;/p&gt;
&lt;p&gt;성공!&lt;/p&gt;
&lt;h3&gt;참고자료&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://stackoverflow.com/questions/47168059/unable-to-activate-constraint-with-anchors&quot;&gt;https://stackoverflow.com/questions/47168059/unable-to-activate-constraint-with-anchors&lt;/a&gt;&lt;/p&gt;</description>
      <category>iOS/트러블 슈팅</category>
      <author>Brad_Heo</author>
      <guid isPermaLink="true">https://bradheo.tistory.com/108</guid>
      <comments>https://bradheo.tistory.com/entry/Thread-1-Unable-to-activate-constraint-with-anchors#entry108comment</comments>
      <pubDate>Wed, 19 Jun 2024 15:17:05 +0900</pubDate>
    </item>
  </channel>
</rss>