React Native 앱을 시뮬레이터에서 실행하기 위해 yarn run ios 를 실행했으나 빌드 실패가 됐습니다. node_module 폴더를 삭제 후 재설치를 했는데도 안됐습니다. Xcode에서 빌드를 돌렸을 때 뜨는 오류는 '4 duplicate symbols for architecture x86_64' 라는 오류였고 VScode에서는 아래 이미지처럼 엄청나게 많은 오류메시지가 좌르르륵 출력되면서 Build Fail 처리되었습니다. 구글링을 해보니 해당 오류가 뜨는 이유는 여러 경우가 있는 것 같은데 저의 케이스의 경우는 유사한 라이브러리가 두 개 이상 설치 되어있을 때 라이브러리끼리 충돌이 일어나 발생하는 문제인듯 했습니다. duplicate symbol 메시지를 보면 react-native-b..
RN이 동작하는 원리를 알기 이전에 먼저 Thread 의 개념을 알아야한다. Thread란? 실행되는 프로세스 내에서 실제로 작업을 실행하는 주체로, 가장 작은 작업의 단위로 볼 수 있다. 명령어를 실행하여 처리하는 주체이다. 음식점에서, 여러가지 음식을 만드는 행위로 빗대어 말할 수 있다. (= 다양한 작업을 실행하는 주체) 보통 프로세스 하나 당 하나의 스레드를 가지고 있지만, 환경에 따라 두 개 이상의 스레드를 가질 수 있으며, 이를 멀티스레드 라고 한다. React Native 의 4가지 Thread React Native 에는 4가지 Thread가 있다. 1. Main Thread 또는 UI Thread Native 영역에 레이아웃을 그려주는 역할을 한다. 2. JavaScript Thread ..
Content Hugging Property UIFramework 에서 제공하는 일부 뷰에는 컨텐츠 고유사이즈라는 개념이 있다. 예를 들면 UI라벨, UI버튼과 같은 속성들인데, 텍스트나 이미지에 따라 크기가 결정되는 뷰가 있다. 이런 뷰들은 다른 뷰들간에 걸린 제약조건에 의해서 컨텐츠 고유 사이즈보다 늘어나거나 줄어들 수 있다. 이 때 더 늘어나게 되는 것에 대해 저항하는 제약을 contents Hugging 더 줄어들게 되는 것에 대해 저항하는 제약을 contents compression resistance 라고 함 이런 고유콘텐츠 사이즈 변경에 대한 제약에도 우선순위가 있다. 우선순위에 따라 컨텐츠 고유 사이즈보다 줄어들게할건지,늘어나게 할건지 설정할 수 있다. Hugging Priority 는 우..
조건문이란? 주어진 조건에 따라서 애플리케이션이 다르게 동작하도록 하는 것 if, switch 두가지가 있다. 조건문과 관련해 guard 를 이야기 해볼 수 있는데 이는 다른 게시물에 작성하겠다. 1. if...else문 기본형태 // if문 if 조건식 { 실행할 구문 } // if~else문 1 if 조건식 { 조건식이 만족하면 해당구문 실행 } else { 조건식이 만족하지 않으면 해당 구문 실행 } // if~else문 1 if 조건식1 { 조건식1을 만족할 때 실행할 구문 } else if 조건식2 { 조건식2를 만족할 때 실행할 구문 } else { 아무 조건식도 만족하지 않을 때 실행할 구문 } 예제 let age = 20 if age < 19 { print("미성년자 입니다.") } if ..
함수 작업의 가장 작은 단위이자 코드의 집합 반복적인 프로그래밍을 방지할 수 있다. 하나의 함수에는 하나의 기능만 구현하는 것이 좋다. 기본형태 func 함수명 (파라미터명: 데이터타입) -> 반환타입 { return 반환값 } 기본형태 활용1 두 수를 덧셈한 결과를 반환하는 함수 sum을 만들었다. 파라미터 a, b 는 정수형 값을 받고, 정수형 값을 반환한다. 함수를 호출할 때는, 파라미터명(또는 매개변수명/전달인자)을 붙여서 파라미터 값과 함께 보낸다. func sum(a: Int, b:Int) -> Int { return a + b } sum(a: 2, b: 6) // 8 기본형태 활용2 문자열 "Hello" 를 출력하는 함수를 만들었다. func hello() -> String { return ..
컬렉션(Collection) 타입 데이터들의 집합 묶음 Array : 같은 데이터 타입의 값들을 순서대로 지정하는 리스트 Dictionary : 순서없이 Key, Value 한 쌍으로 데이터를 저장하는 컬렉션 타입 Set : 같은 데이터 타입의 값을 순서없이 저장하는 리스트, 순서보장X, 중복값 허용X Array 같은 데이터 타입의 값들을 순서대로 지정하는 리스트 기본적인 Array 사용방법 데이터 마지막에 추가 : append() 데이터 삽입 : insert(value, at : index) 데이터 삭제 : remove(at : index) 데이터 조회 : 변수명[index] var numbers: Array = Array() // Array 생성 // 데이터 추가 : append() numbers.a..
상수, 변수는 값을 저장할 수 있는 저장공간을 의미한다. 상수 변하지 않는 일정값 (ex. 디바이스의 전체용량을 표시할 때 사용가능) let 상수명 : 데이터타입 = 값 변수 변할수있는 값 (ex. 현재 사용가능용량 표시할 때 사용가능) var 변수명 : 데이터타입 = 값 상수로 선언된 값에 다른 값을 저장하려고 하면 Cannot assign to value: 'a'(상수값) is a 'let' constant. 라는 문구와 함께 오류가 발생하게 된다. 데이터타입 iOS 에서는 빌드단계에 타입 검사를 하기 때문에, 실행도 되기 전에 오류를 발생시키므로 빠른 수정 가능하다. Swift 는 타입추론 가능하므로, 타입을 명시해주지 않아도 된다. ex) var number = 10 ex) let strVal =..
Xcode 설치방법 맥북이나 Mac 피시가 있어야 사용할 수 있다. https://developer.apple.com/kr/xcode/ Apple Develop 사이트에 접속해서 xcode 설치해준다. 설치하는 데 매우 오래 걸린다. ㅠ Xcode Playground 작성한 코드의 결과를 즉시 보여주는 플레이그라운드, 개발도구. 말그대로 swift 코드를 위한 운동장 Playground 만드는 방법 Xcode 를 열고 File > New > Playground 를 통해 새로운 playground 를 만들어준다. Swift 란? Swift 2014 WWDC 발표 - Safe, Fast, Expressive 엄격한 문법, 컴파일러 개선, 편하고 보기좋은 문법 워치, TV, mac, iOS 애플 프랫폼 앱 개..
목적 patch-package를 사용해 외부 라이브러리 수정하고 유지하기 개요 월간 캘린더가 아닌 주간 캘린더가 필요했는데, 리액트 네이티브 위클리 라이브러리 중 마땅한 캘린더가 없어 원하는 대로 커스텀하기 위해서는 라이브러리를 건드려야 하는 상황이 불가피했다. 라이브러리를 설치하고 node_modules 폴더에서 수정하자니, 일회성 빌드는 가능할지도 모르겠지만, 새로운 환경이나 모듈 재설치 때 마다 소스코드를 수정할 수 없는 노릇이다. 이처럼 개발하다보면 라이브러리를 건드려야 하는 상황이 생기게 된다. 이럴 때 해결할 수 있는 방법이 크게 두 개가 있다. library fork patch-package 1번의 경우, 라이브러리를 레포지토리를 내 깃헙으로 fork하고, 내 깃헙 라이브러리를 추가해주는 방..
내 블로그를 방문해주신 분이 블로그 테마와 코드부분이 마음에 든다고 설정 방법을 물어보셨다. 누추한 곳에 . . . 귀한분이 . . 감사합니다 . . 하지만 설정을 한지 꽤 된 터라 자세하게 기억이....🥲 최대한 기억을 더듬어 작성해본다. 1. 사용중인 테마 BookClub 을 커스텀해서 사용중! 2. Highlights 라이브러리 추가 태그 내부에 코드블록 테마를 바꿔줄 highlights 라이브러리를 추가한다. 아래 링크에서 데모를 확인해보고, 마음에 드는 테마를 정한다. 나는 안드로이드스튜디오가 익숙해 안스로 정했다. androidstudio 를 지우고 원하는 테마 이름을 적으면 된다. 이름 적어줄때 전부 소문자여야하고, 특수문자 없이 적어줘야했던걸로 기억이 난다. (상관없나..?😅) https:..