iOS 버전이 낮은 시뮬레이터로 Run을 했을때 아래의 오류가 생기면서 컴파일 되지 않았습니다. The linked library '파일명' is missing one more architectures required by this target: arm64. 해결 두가지 방법이 있습니다. 1. (없어도 될 라이브러리, 프레임 워크일경우) General - Framworks, Libraries, and Embedded Content 에러가 나는 라이브러리 삭제 2. (라이브러리, 프레임워크가 필수로 있어야 하는경우) Build Settings - Architectures - Excluded Architectures - arm64 추가
가장많이 보았고 가장많이 헷갈렸던 인스턴스, 메서드 에 대해 정리 해 보려 합니다 그동안 어림짐작해서 이건 메서드겠구나 했는데 정확히 알고 넘어가야겠다!!! 메서드 (Methods)특정 타입의 클래스, 구조체, 열거형과 관련된 함수 를 메서드라 합니다.함수 , 이것은 함수였다.메소드에는 인스턴스 메서드, 타입 메서드 가 있어요. 인스턴스 메서드 ( Instance Methods )인스턴스 메서드는 특정 클래스(class), 구조체(struct), 열거형(enum)의 인스턴스에 속한 메서드 입니다. 아래 코드 처럼요!class Counter { //
문제 라이브러리 설치할때마다 DEPLOYMENT_TARGET 버전이 변경되서 빌드를 할때마다 각 라이브러리의 타겟 버전을 변경해줘야 하는 번거로움이 있었습니다. 해결 Podfile에서 아래 내용을 추가해줍니다. // 이 내용을 추가해주세요. post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0' // 5.4' pod 'SnapKit', '~> 5.0.0' // 여기 추가 post_install do |installer| installer...
TCP( Transmission control Protocol ) 데이터를 메세지 형태로 보내기 위해 IP와 함께 사용하는 프로토콜. 패킷을 추적 & 관리 함. 역할 패킷에 번호를 부여해서 패킷이 중간에 손실되지 않았는지 추적 전송 후 목적지에서 나누어진 패킷이 다시 온전한 데이터가 될 수 있도록 재조립. 특징 서로 데이터를 주고받을 수 있는 양방향 통신이며, 일대일 통신 입니다. 신뢰성 있는 연결을 중시할 때 사용합니다. ex) 전화 흐름제어 데이터 처리 속도 조절 혼잡제어 네트워크 내 패킷 수가 넘치지 않게 방지. IP ( Internet Protocol ) 데이터를 전송하는 역할. 패킷 데이터를 보낼때 한 뭉텅이로 보내는게 아니라, 효율성을 위해 조각조각 나누어 보내는데 이때, 나누어진 데이터를 말..
프로젝트를 처음 만들어봤을때 가장먼저 맞이해주는 override 많이들 보셨죠 ? 아무 생각없이 넘어갔는데 오늘은 override에 대해 한번 파봅시다!! 오버라이드 (override) 일단 공식문서의 내용을 요약해서 먼저 한번 볼까요 상위클래스로부터 상속받은 메서드, 프로퍼티들을 하위 클래스에서 재정의하는 것 살짝 알듯 말듯 하네요. 말보단 코드로 먼저 보시죠 !! 눈으로 보는것 보다 Playground에 따라 쳐보시면 이해가 더 잘갑니다 먼저 Student라는 class를 만들어볼게요. class Student { func sayHello() { print("안녕 나는 학생이야") } } 호출을 하면 어떻게 나오는지 볼까요 ? let student = Student() student.sayHello(..
Extension? 스위프트의 강력한 기능 중 하나로. 기존 클래스, 구조체, 열거형 타입에 새로운 프로퍼티, 메서드, 이니셜라이저 등을 추가하여, 소스 코드에 접근하지 못하는 타입들도 확장해서 사용할 수 있다. 사용시 extension 이란 키워드를 사용하여 확장한다. 선언 extension 확장할 타입 이름 (e.g. Int) { // 타입에 추가될 새로운 기능 구현 } // 또는 extension 확장할 타입 이름: 프로토콜1, 프로토콜2 { // 프로토콜 요구사항 구현 } ⭐️ 확장에 프로토콜 추가 아래와 같은 예시를 보면 struct Language { let name: String } let sweetft: Language = .init(name: "sweetft") let swift = sw..
코드로 레이아웃을 잡아보고 있는데 수정사항이 있을때마다 Run (Cmd + R)을 해야하는 번거로움이 있습니다. 하지만 SwiftUI의 기능중 하나를 써서 실시간으로 변경된 레이아웃을 볼수 있게 할 수 있습니다 !! 결과물 먼저 보시죠! 솔깃한 주제지만 요구사항이 있어요 ! 요구사항 Xcode 11 macOS Catalina iOS 13 ⚠️ 참고 Mac OS: Monterey Xcode: 13 이상 위 조건에 해당한다면 시뮬레이터를 iOS 15버전이상으로 지정해주어야 preview가 실행이 됩니다. 요구사항이 갖춰졌다면 시작해보죠! 기존 레이아웃을 코드로 작성했던곳에 아래 코드를 따로 넣어줍니다. Preview를 보는 코드는 아래와 같아요 (설명도 참고 !) // 전처리 #if DEBUG import ..
ATS(App transport Security)는 iOS 9 버전 이후부터 보안에 취약한 네트워크를 차단시키게 된다. 즉 https 가 아니라면 불러오지 못합니다. 현재 웹뷰 연결시켜야 하는 작업중에 맞는 도메인 주소로 들어가도 아무 화면이 나오지 않았는데 이는 아래와 같이 해결할 수 있다. 1. 프로젝트 내 info.plist 2. info.plist 내용 수정 information Property List에 ' + ' 버튼 클릭 추가된 리스트의 Key값에 App Transport Security Settings 추가 App Transport Security Settings에서 Allow Arbitary Loads 추가 Allow Arbitary Loads의 Value값에 YES 입력 프로젝트 Run..
오늘은 아래와 같은 코드에 대해 알아보려고 합니다. func swapTwoValues(_ a: inout T, _ b: inout T) { let tempA = a a = b b = tempA } 바로 제네릭 ! Generic (제네릭) 사전적 의미 Generic: 포괄적인 Generic의 장점 ? 타입에 유연하게 대처할수 있다. 제네릭으로 구현한 기능과 타입은 재사용에 용이 하고, 코드 중복을 줄일 수 있습니다. 글로 보면 어떤게 편한지 모르니 코드로 보시죠! 먼저 Generic을 사용하지 않고 상황을 들어볼게요. 1) Int를 받는 타입 func swapTwoInts(inout a: Int, inout b: Int) { let temporaryA = a a = b b = temporaryA } var..
- Total
- Today
- Yesterday
- 원티드 프리온보딩
- iOS error
- Swift inout
- swift programmers
- Swift 알고리즘
- Swift 내림차순
- Swift RIBs
- Swift 프로퍼티
- RIBs tutorial
- swift (programmers)
- Class
- Swift ModernRIBs
- swift protocol
- swift reduce
- Swift final
- Swift joined
- Swift 프로그래머스
- Swift init
- ios
- removeLast()
- CS 네트워크
- Swift joined()
- 2023년 회고
- swift property
- Swift
- Swift Leetcode
- Combine: Asynchronous Programming with Swift
- Swift Error Handling
- RTCCameraVideoCapturer
- swift 고차함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |