특정 버전의 node 를 사용해야해서,node 를 설치 프로그램 통해서 설치하고,nvm 을 통해서 버전을 바꾸었는데, 안됨... nvm install 20.15.1nvm use 20.15.1node -v # 20.17.0 설치 프로그램을 이용해서 설치했기 때문에,node 의 경로가 여러개로 되어서 발생하는 문제였다. ± % which -a node !192/opt/homebrew/opt/node@20/bin/node/Users/..

전체 글

0. Model, ViewModel : 내 앱에 있는 모든 data와 logic 이 있는 부분.카드 게임에서 카드의 구조, 카드덱(몇 장 있는지), 카드를 골랐을 때 어떤 일이 벌어지는지, 또 카드를 뒤집어서 어떻게 점수를 따는지 같은 부분이다.class CardGame { var cards: [Card]() var indexOfOneAndOnlyFaceUpCard: Int? func choose(card: Card) { // 카드를 눌렀을 때 수행하는 동작 card.isFaceUp = !card.isFaceUp }}struct Card { var isFaceUp = false var isMatched = false var identifier..

1. cocoapods 설치1. 코코아 팟을 설치한다.sudo gem install cocoapods2. 프로젝트 경로로 이동해서 초기화를 한다.pod init3. 생성된 Podfile에 가져올 라이브러리를 넣는다.nano Podfile4. 가져올 라이브러리를 검색해서 필요한 버젼으로 가져온다.원래 버젼이 iOS 9.0으로 되어있는데, SnapKit 라이브러리를 쓰려면 최소 10 버젼을 사용해야해서 그렇게 사용했다. SnapKitctrl + X - y - enter 입력하고 나오면 된다.5. 라이브러리 설치pod installM1 맥북이라 오류가 발생했다.. 당황하지 않고 검색해서 방법을 찾았다. CocoaPods Fails On Apple Siliconsudo arch -x86_64 gem instal..

21.02.08 에 작성했던 글1. 폴더 구조 잡기우리 앱에는 이 정도로 잡으면 될 것 같아서 이렇게 잡았다.그런데, 폴더를 만들고 무작정 파일을 옮기면 (특히 info.plist와 assets) 빌드 오류가 발생했다.info.plist와 Assets 폴더의 location을 Relative to Project로 바꾸고,프로젝트 - Build Setting - Packaging 의 info.plist 파일의 위치를 해당 폴더 안으로 설정해서 오류를 해결할 수 있었다.참고 링크2. 스토리보드 없이 코딩 환경 설정 방법앞선 글에서 작성했다3. github 연동Xcode 에서 하는 방법!Xcode > Prefereces > Source Control 탭에서 로그인해서 이용하면 된다. 소스트리를 이용하는 방법X..

20.10.12 작성했던 글스토리보드 없이 코딩 환경 설정 방법사실 스토리보드로 코딩을 하려고 했는데 iOS 초보인데다가 두명이 같이 개발을 할거라.. 스토리보드는 두명이 같이 만지면 오류 파티가 열린다는 글을 찾아서 스토리보드 없이 개발을 해보기로 했다.UIKit으로 프로젝트를 생성Main.storyboard 파일 삭제info.plist 에서 스토리보드 관련 key 삭제.Application Scene Manifest 안에 있는 storyboard name, Main storyboard file base name 을 삭제한다.앱의 첫 화면으로 쓸 UIViewController를 하나 생성한다.SceneDelegate 의 scene 함수 수정.func scene(\_ scene: UIScene, will..

NSString *str = nil;NSString *a = [NSString stringWithString: str]; // crashNSString *b = [NSString stringWithFormat: @"%@", str]; // null삽질을 거치다 알게 된건데, a 와 b 문자열의 경우 차이가 없어보이지만...아래처럼 nil (NULL) 인 경우에 차이가 생긴다.NSString *str = @"asdfasdf";NSString *a = [NSString stringWithString: str];NSString *b = [NSString stringWithFormat: @"%@", str]; 하드코딩한 값이 아니라 서버에서 내려오는 값인 경우 nil 체크를 따로 거치기 귀찮다면 stringWi..

블로그 이주를 결심했던 이유가 velog 의 통계 기능, 카데고리 기능 없음이 주였다. 근데 막상 티스토리를 만들어놓고 보니 그 많은 글들을 옮기는 것도 일이고, 스킨이나 광고를 커스텀하는 것도 일이라 차일피일 미뤄왔는데, 이제는 더 이상 미룰 수 없다... 바이브로 시작하려고 한다. 원래 사용하고 싶었던 테마는 이런 테마이다. https://sweet-myo.tistory.com/650 디자인 적인 감성이 있고, 특색 있는 테마를 사용하고 싶었는데, 개발 블로그에 제일 중요한 건 코드 가독성이기 때문에.. 일단은 많은 개발자들이 사용하고 있는 hELLO 스킨을 적용하고, 사용하다가 불편한 것이 있으면 추가해보기로 결정했다. 나중에 공부해서 직접 커스텀 스킨을 만들 수 있으면 좋겠다...!! https:..

2022-01-04 한줄 요약 : reactive! 반응형! 비동기적으로 일어나는 일들에 대한 코드를 깔끔하고 쉽게 사용하기 위해서 RxSwift를 사용한다. 0. 멀티 스레드 기본적으로, iOS는 멀티 쓰레드 (multi-thread) 환경이다. 쓰레드(일하는 녀석)가 여러개 있어서, 일을 따로 진행해준다. 특별히 쓰레드를 지정하지 않으면 main 스레드에서 돈다. 데이터를 받아오거나 하는 작업이 필요하다면 DispatchQueue.main.async {} 를 사용해서 다른 스레드에 작업을 넘긴다. 중요한 건 UI 작업을 할 때는 무조건 main 스레드에서 해야한다. 1. 개념잡기 RxSwift 4시간에 끝내기 github 을 클론받아서 진행했다. 1-2교시는 시간이 흐름에 따라 위의 타이머가 가면서,..

2022-05-03 1, 2. #include #include #include typedef struct { char author[30]; char title[50]; int pages; } Book; int main() { Book books[3]; // Book * books = (Book *)malloc(sizeof(Book) * 3); // 2번 문제. printf("도서 정보 입력\n"); for (int i = 0; i < 3; i++) { printf("저자: "); fgets(books[i].author, sizeof(books[i].author), stdin); books[i].author[strlen(books[i].author) - 1] = 0; printf("제목: "); fgets..