Programming
-
Xcode - The linked framework ~~ is missing one ore more architectures required by this target: arm64Programming/Errors 2021. 12. 26. 11:00
이 에러는 프로젝트를 Intel맥에서 생성하고 M1맥에서 실행하면 발생하는 문제인 거 같습니다. 해결 방법은 Build Settings을 추가시켜주면 끝! 1. Target -> Build Settings로 이동합니다. 2. +를 클릭한 후 Add User-Defined Setting 클릭 3. Key에 VALID_ARCHS Value에 $(ARCHS_STANDARD)를 입력해줍니다. 그럼 위와 같이 표시됩니다. 그럼 이제 양쪽에서 모두 정상적으로 빌드가 됩니다. https://stackoverflow.com/questions/63391793/xcode-12-build-target-in-wrong-order-for-simulator/63405201#63405201 Xcode 12 build target ..
-
Git - Commit Message ConventionProgramming/Git 2021. 12. 22. 14:51
안녕하세요. BeePeach 입니다 :0 Git 커밋 메세지를 작성할 때 지금까지는 저만의 기준으로 작성을 해왔습니다. 하지만 공통적으로 따르고 있는 컨벤션이 있다면 그 기준을 따라주는 게 협업을 하는데 도움이 되겠죠. 이 포스팅에서 다루는 컨벤션이 정답은 아닙니다. 다른 기준이 있을 수 있고 팀마다 컨벤션이 다르겠죠??? 그리고 커밋의 단위는 되도록 한 작업을 여러 번에 걸쳐서 작성하는 게 아니라 한 개의 커밋으로 작성합니다. 또한 여러 작업을 한 개의 커밋으로 작성하지 않습니다. Commit Message Structure 커밋 메세지의 기본 구성은 title, body, footer로 구분됩니다. Title은 반드시 작성해야 하고 body, footer는 생략해도 됩니다. Title에는 어떤 의도로..
-
Swift - ProtocolProgramming/Swift 2021. 12. 22. 13:05
안녕하세요 BeePeach입니다 :) 이번에 공부해볼 내용은 Protocol(프로토콜)입니다. 먼저 Protocol의 사전적 정의부터 한 번 알아볼까요?? 사전적 의미는 규약, 조약이라고 볼 수 있겠네요. 규약이란 서로 무엇인가를 위해서 약속하고 지키는 것을 의미하죠??? 이러한 의미로 Protocol이란 Type(class, struct, enum)이 어떠한 기능을 구현하기 위해서 필요한 멤버(propert, method, init...)들을 선언해야 한다고 약속하는 것입니다. 다시 말해 Protocol은 Type이 특정 기능을 구현하기 위한 멤버들의 bluePrint(청사진)을 정의합니다. 청사진만 제공하는 것이므로 기능을 구현하지는 않습니다. 어떠한 멤버들이 이러한 형태로 구현됐으면 좋겠어!라는 느..
-
Swift - ExtensionProgramming/Swift 2021. 12. 20. 18:39
안녕하세요 BeePeach입니다 :/ 이번에 공부해볼 내용은 extension입니다. Extension은 이미 존재하는 class, struct, enum, protocol 즉, 다시 말해 존재하는 Type에 새로운 멤버를 추가시킬 때 사용합니다. 심지어 우리가 코드에 접근할 수 없는 기본 제공 Type(Int, String 등등...) 또는 OpenSource에서 제공하는 Type에도 멤버를 추가시킬 수 있습니다. 여기서 주의 깊게 봐야할 단어는 이미 존재하는과 새로운 멤버입니다. 존재하지 않는 Type에는 extension을 사용할 수 없습니다. 그리고 새로운 멤버를 추가시키는 것이지 이미 존재하는 멤버를 수정하는 게 아니므로 override도 불가능합니다. Extension으로 추가할 수 있는 기능..
-
Swift - DeinitializerProgramming/Swift 2021. 12. 19. 11:52
안녕하세요 BeePeach입니다 :) 이번에 공부해볼 내용은 deinitializer입니다. Initializer 이름 앞에 de가 붙었네요?? Init은 초기화를 담당하는 녀석이였습니다. Deinit은 인스턴스가 메모리에서 해제되기 직전에 호출되는 멤버입니다. Initializer는 class, struct, enum에서 사용할 수 있지만 deinitializer는 class에서만 사용 가능합니다. Deinitializer Swift에서는 인스턴스가 더 이상 사용되지 않는다면 자동적으로 메모리에서 삭제시킵니다. 이러한 방식은 ARC(Automatic Reference Counting)으로 관리가 됩니다. (ARC는 매우 중요하지만 여기서는 다루지 않고 따로 포스팅 하겠습니다.) 메모리 관리를 알아서 하..
-
Xcode - Multiple commands produceProgramming/Errors 2021. 12. 19. 00:17
이 에러는 Build input file cannot be found: 이후에 발생한 에러입니다! 해결방법 찾아본 해결방법으로 해결했는데 이번엔 새로운 에러가 반겨줬다. 이 에러는 plist가 여러개 존재할때 발생하는 에러이다. 해결 방법은 Target -> Build Phases -> Copy Bundle Resources 에서 중복이 되는 부분을 삭제해주면 끝!... 결말... 끝인데... 또 다른 에러가 반겨주었다. 근데 이번엔 익숙한 에러 Command LinkStoryboards failed with a nonzero exit code가 발생했다. 그래서 어..? 이건 하고 storyboard의 initial viewcontroller가 잘 설정됐나보고 target에 들어가서 storyboard..
-
Xcode - Build input file cannot be found: ~/Info.plistProgramming/Errors 2021. 12. 19. 00:04
Info.plist의 위치를 새로운 곳으로 변경시키고 나서 빌드를 했더니 이런 문제가 발생했다. 해결 방법 이 에러가 발생하는 이유는 말 그대로 Info.plist의 경로가 잘못 설정되어 있기 때문! 그런데 Info.plist 파일의 Full path를 확인해봐도 잘 들어가 있었다... 그래서 해결 방법을 찾아보니 Info.plist을 Open with External Editor를 이용하여 경로를 수정해도 되고 1. Info.plist를 복사하고 다른곳에 저장한다. 2. 현재 Info.plist를 삭제한다. 3. Info.plist를 다시 추가시킨다. 4. DerivedData 삭제하고 cmd + shift + k 로 클린 빌드 후 5. 다시 빌드! 하면 해결이 된다고 하는데 나는 새로운 Error가 ..
-
Swift - Required InitializerProgramming/Swift 2021. 12. 18. 11:31
안녕하세요 BeePeach입니다 :) 오늘은 Required Initializer (필수 생성자)에 대해서 공부해보려고 합니다. Required라는 의미는 요구된다. 필수의 라는 뜻을 가지고 있습니다. Required init은 의미대로 반드시 구현해야 하는 init을 의미합니다. 프로퍼티에 default value가 없다면 반드시 init이 필요한 거 아니야?? 근데 왜 필수 생성자가 필요하지?? 라는 의문이 들 수 있는데요! Required init은 class에서만 사용됩니다. 그리고 required은 subclass에서 반드시 구현을 해야 한다는 의미입니다. 그리고 subclass에서 superclass의 init을 다시 구현하는 것을 overriding이라 하며 override 키워드를 적어줘야..