본문 바로가기

분류 전체보기326

공동작업을 위한 Git 버전관리 공동작업을 위한 Git 버전관리 참고: https://tecoble.techcourse.co.kr/post/2021-07-15-git-branch/ Git 우리는 개발을 진행하면서 우리가 구현한 소스코드를 git이라는 버전관리 시스템을 통해 관리한다. git을 사용하지않았더라면 협업을 진행하며 메일이나 USB로 소스코드를 주고 받았을 것이다. git을 사용함으로써 우리는 시시각각 코드를 전송할 수 있다. 또한 일일히 병합하는 과정을 생략하고도 손쉽게 소스코드를 관리할 수 있다. 뿐만 아니라 꼼꼼한 commit 로그 과정을 통해 과거의 소스코드와도 한눈에 비교가 가능하다. 협업을 할 때에도 이 git을 사용해 분산 버전 관리를 할 수 있어 브랜치에 따라 독자적인 개발을 하고 메인 저장소에 merge하는 방.. 2022. 4. 22.
Objective C 울렁증 극복하기 오늘 부터 회사에서 맡아야하는 앱은 Objective-C 였다. 하.. 전혀 열받지 않고 어질어질 할 뿐.... 이게 뭐야....? 난 크로스플랫폼으로 빌드한 건줄 알고... swift 파일 어딨지? 하고 있었다. 아.. swift가 아니니까 swift파일이 없는 거구나..... h 랑 m 아이콘이 엄청 많다. 와... 그럼 일단... 왜 해야하는 지 바로 느껴졌다. 오늘은 소들이 님의 블로그를 가지고 공부를 했다. objc를 공부해야하는 이유 장점 회사코드 리팩토링이 가능 기능검색시 굉장히 많은 비중으로 objc가 나온다 ios 언어의 왕이 될 수 있다. 단점 어렵고 지저분 처음볼 때 난해하다 깊게 공부하지는 않아도 이해할 수 있을 정도 수준으로 공부하기 프로젝트 생성 ➖ 생성시 language 선택 .. 2022. 4. 21.
ios 소켓통신에 대하여 0. 서론 오늘 몇시간을 소켓통신에 대하여 조사를 했는데 생각보다 많은 자료를 찾지는 못했다. 한번 다시 정리해야할 자료이므로 참고 부탁드립니다. 한번 쭉 읽어보셔도 좋을 거에요 1. 선행지식 📌 📌 2. 개념 소켓이란 정규 유닉스 파일 기술자를 이용하여 다른 프로그램과 정보를 교환하는 방법 용어 설명 유닉스는 운영체제 중 하나입니다. 유닉스에서는 모든 것이 파일로 존재하게 됩니다. 그리고 소켓도 유닉스에서 파일 로 취급받습니다. 모든 유닉스 프로그램은 파일 기술자(File Descriptor) 라는 것을 통해서 입출력(read, write)을 실행합니다. 파일 기술자는 열린 파일을 의미하는 인덱스 번호입니다. 비슷한 맥락으로 **소켓 기술자(Socket Descriptor)**는 소켓을 만들고 얻은 파.. 2022. 4. 20.
WKWebView에서 보내는 JS를 캐치하는 방법 웹에서 보내는 javascript를 캐치하려면 미리 등록을 해야한다. 이때 javascript를 보낼때 message에 javascript를 보내고 body값을 함께 NSDictionary (JSON) 형태로 보내주면 그걸 파싱해서 받을 수 있다. // MARK: - WKScriptMessageHandler extension MainViewController: WKScriptMessageHandler { /// message name: javascript 명 /// 이렇게 사용하려면 javascript 명을 미리 등록을 해야한다. func userContentController(_ userContentController: WKUserContentController, didReceive message: W.. 2022. 4. 15.
WKWebView 기본메서드 와 Delegate메서드 [WKUIDelegate,WKUIDelegate] WKWebView에서 자주 사용하는 기본메서드 load( _: ) HTML 파일을 읽어들일 때 사용. 쉽게 말해 웹페이지를 로드한다고 생각을 하시면 될 거 같습니다. 비동기 메서드라 동시에 다른 로직을 처리할 수 있어 앱이 자연스럽게 진행이 되어가는 장점이 있습니다. func load(_ request: URLRequest) -> WKNavigation? loadHTMLString(_:baseURL:) 말 그대로 HTMLString을 읽어오는 메서드로 직접 웹페이지를 로드해서 웹페이지로 이동을 하거나 개발자가 만든 URL로 이동하게 함 첫 번째불러올 웹페이지 url을 읽어오는 것입니다. 두 번째relative URL을 해결할 때 사용되는 기본 URL func loadHTMLString(_ string: .. 2022. 4. 14.
mutating 과 구조체 참고: https://velog.io/@wook4506/iOS-Swift-Swift-문법을-알아보자-18편-mutating Class && Struct && Enum 미완 enum추가 기존 글에서 클래스는 참조타입이고 구조체와 열거형은 값 타입이라고 정리를 했다. 그래서 값타입인 구조체에서는 인스턴스 메소드 내에서 프로퍼티들을 수정할 수 없게 되어있다. 때문에 이 프로퍼티들을 구조체 안에 있는 메소드에서 수정을 하려면 mutating이라는 키워드를 사용해야한다. mutating 특정 메소드 내에서 구조체 또는 열거형의 프로퍼티를 수정해야하는 경우, 해당 메소드의 동작을 변경하도록 하는 것 예시를 보면 Person이라는 구조체에서 init을 통해 초기화를 해주어서 완벽한 코드처럼 보이지만 에러가 발생한다... 2022. 4. 13.
[ios] shortening unwrapping 쇼트닝 언래핑 swift5.7 Swift 5.7에서 반영될 Unwrapping과정 번역: https://betterprogramming.pub/swift-5-7-unwrapping-optionals-gets-improvement-be81c578e9fa 현재 Xcode 13.3에서 지원안함 Shadowing이란 옵셔널 x를 풀었을 때 동일한 값을 포함하는 x라는 이름의 새 상수를 만들었고 이제 옵셔널 변수 대신 이 상수를 사용합니다. var x: Int? if let x = x { // do something with the new x } 이러한 작업을 shadowing 이라고 합니다. 📌섀도잉은 좋은걸까? 셰도잉에는 몇가지 단점이 있습니다. 현실적인 상황에서는 변수가 훨씬 긴경우가 많다. var lastTimeUserEnteredTh.. 2022. 4. 12.
MyWebBrowser프로젝트를 통한 웹뷰 뜯어먹기 일단 앞으로 여러가지 기능을 앞으로 구현하기위해 간단하게 기능을 추가해보려고 한다. 그리고 편의상 모든 포스팅은 편의 말투로 작성합니당 프로젝트생성 프로젝트는 원하는 폴더에 생성합니다. 세팅 sceneDelegate는 사용하지 않을 예정이기 때문에 아래 세가지 작업을 진행한다. - SceneDelegate.swift 파일 삭제 - AppDelegate var window: UIWindow! 입력 AppDelegate에 있는 UISceneSession과 관련된 두 메소드 삭제 info.plist에 등록된 Application Scene Manifest 삭제 -> 삭제 안할경우 AppDelegate에 정상작동을 안해요 iOS13을 지원하게 된 이후부터 프로젝트엔 자동으로 SceneDelegate가 세팅되어있.. 2022. 4. 8.
얼럿 addAction 한번에 추가하기 여러개의 Action을 한번에 추가하기 콜렉션의 사용법중 forEach와 for in 이 있다. for in 은 모든 요소의 갯수만큼 반복하지만 for each는 클로저를 파라미터로 주고 요소 갯수만큼 반복한다. For - each는 반복 실행하려는 코드를 파라미터로 받고, 저장된 요소는 클로저 상수로 전달된다 for - in문은 우리가 직접 구현하는 "반복문" 하지만 forEach는 내가 반복하고 싶은 구문을 forEach라는 함수의 파라미터로 "클로저"로 작성해서 넘겨주는 것 그렇기 때문에, 반복문 안에서만 사용할 수 있는 continue, break는 for - in 에선 사용 가능하지만, forEach에서는 불가능하다. 내가 전달한 print 함수를 찍는 클로저를 nums 요소의 갯수(4)만큼 반.. 2022. 4. 4.
네비게이션 컨트롤러 NavigationController 사용하기 NavigationController 네비게이션 컨트롤러는 ViewController의 타입 중 Container ViewController Type에 속한다. 이 컨테이너 뷰컨트롤러에는 TabBar ViewController또한 포함된다. ViewController Type ViewController는 두가지 타입이 존재한다. Content ViewController Type: Container ViewController Type: NavigationViewController / TabBarViewController 처럼 여러개의 ViewController를 제어하는 ViewController 네비게이션 인터페이스 아래 그림은 iOS에서 정말 많이 사용하는 인터페이스이다. 주로 계층적 구조의 화면전환을.. 2022. 3. 26.