라벨이 Xcode인 게시물 표시

[Xcode] 디버깅 입문

이미지
[Xcode] 디버깅 입문 Xcode 디버깅 입문 코딩을 하다가 버그를 발견하거나 내가 원하는 결과가 나오지 않을 때면, 프린트 문을 써서 문제를 해결하곤 했는데 디버깅 툴 이라는 것을 발견한 후로 잘 쓰면 생산성을 향상 시킬 수 있을 것 같아서 정리 해 놓습니다. Xcode에 있는 디버깅 도구를 활용해 버그를 잡아봅시다. BreakPoint 브레이크 포인트는 실행중인 앱을 일시정지 하는 포인트 입니다. 사용 법은 매우 간단합니다. Xcode 소스코드의 왼쪽에 있는 라인 넘버를 클릭하면 파란 화살표가 생깁니다. 브레이크 포인트가 생성된 것 입니다. 이제 앱을 실행시키면, 브레이크 포인트에서 앱이 일시정지 되는 것을 볼 수 있습니다. 다시 앱을 동작하게 하는 방법도 간단합니다. 디버깅 창 중간의 삼각형 모양의 화살표를 눌러주면 다시 실행됩니다. 만약 브레이크 포인투가 두개라면 다음 브레이크 포인트에서 일시정지합니다. 브레이크 포인트를 다시 한번 클릭하면, 비활성화됩니다. 토글 형태이기 때문에 활성화, 비 활성화 하면서 브레이크 포인트를 사용할 수 있습니다. 브레이크 포인트는 오른쪽으로 드래그 하면 제거됩니다. 위 아래 방향으로 드래그 해서 옮길 수 있습니다. 디버깅 창에서 브레이크 포인트와 같은 파란색 화실표 버튼을 누르면, 한번에 모든 브레이크 포인트를 활성화, 비활성화 시킬 수 있습니다. Xcode의 왼쪽 네비게이터에서 브레이크 포인트 모양의 아이콘을 누르면 현재 설정된 브레이크 포인트들을 한번에 볼 수 있습니다. 디버깅 중 일시 정지된 브레이크 포인트에서 현재 변수 상태를 확인할 수 있습니다. 가리키고 있는 브레이크 포인트에서 변수에 어떤 값이 할당되어있는지 확인 할 수 있습니다. 이 창을 통해 내가 기대하고 있는 값이 제대로 들어가 있는지 확인하면 문제를 해결하는데 큰 도움이 됩니다. Control flow 앱의 사용 흐름을 체크 하는데 모든 라인에 일일이 브레이크 포인트를 걸어주어

Xcode에서 storyBoard없이 개발하기 - Tabbar 만들기

이미지
Xcode에서 storyBoard없이 개발하기 - Tabbar 만들기 개인적으로는 스토리보드를 가지고 개발하는 것이 좋다고 생각합니다. 하지만 스토리 보드 없이 개발을 하면 완벽하게 어떤 과정이 UI적인 storyBoard를 통해서 동작하는지 알 수 있기 때문에 만들면서 공부하면서 기록을 남겨놓습니다. 스토리 보드없이 개발 할 수있는 환경을 구축했다면, Tabbar를 사용해서 2개의 tabbarItem을 가진 앱을 만들어 봅시다. 구조 스토리 보드가 없기 때문에 어떤 구조를 가지고 있는지 머리에 명확히 가지고 시작해야 합니다. 우리가 만들 앱의 큰 틀은 하나의 tabbar에 2개의 view가 각각 navigationController로 조작을 하는 구조입니다. tabbarController 추가 window?.rootViewController 부분에 rootViewController를 설정해주어야합니다. 우리는 tabbar를 컨트롤 할 tabbarController 를 할당해 주겠습니다. let tabbar = UITabBarController() UITabBar.appearance().tintColor = .systemGreen tabbar.viewControllers = [네비게이션컨트롤러1, 네비게이션컨트롤러2] window?.rootViewController = tabbar 이렇게 2개의 네비게이션 컨트롤러를 tabbar에 추가해 줄 수 있습니다. 각 view추가 tabbar를 만들었으니 이제 각 탭을 넣었을 때, 호출할 view들을 추가해줍니다. // first tabBarItem let searchVC = SearchVC() searchVC.title = "search" searchVC.tabBarItem = UITabBarItem(tabBarSystemItem: .search, tag: 0) UINavigationController(rootViewCont

[Xcode] 내가 자주쓰는 Xcode 단축키 정리

이미지
Xcode 단축키 정리 개발을 하면서 단축키를 얼마나 쓰냐에 따라 생산성의 차이를 느끼면서, 아 모르는 단축키가 있으면 한번 시간내서 외워두어야겠다고 생각했습니다. 모르는 단축키가 있다면 이번에 배워 생산성을 올려봅시다! 네비게이터 (좌측) ⌘ + 0 - 네이게이터 보이기 / 숨기기 ⌘ + 1 ~ 9 - 번호 순서대로 네비게이터 메뉴로 이동 인스펙터(우측) ⌘ + ⌥ + 0 - 인스펙터 보이기 / 숨기기 ⌘ + ⌥ + 1 ~ 4 - 번호 순서대로 인스펙터 이동 화면 제어 ⌃ + ⌘ + F - 전체화면 진입 / 나가기 ⇧ + ⌘ + Y - 디버그 창 숨기기 / 보이기 코드 편집 ⌘ + ⬅(방향키) - 줄의 맨 끝/처음 으로 이동하기 ⌘ + ⇧ + ⬅(방향키) - 줄 선택하기 ⌥ + ⬅(방향키) - 단어 단위로 이동하기 ⌃ + i - 인덴테이션 ⌘ + / - 주석처리 ⌥ + ⌘ + / - 메소드 설명추가 ⌘ + ‘-’ - 줌아웃 ⌘ + ‘+’ - 줌인 ⌘ + ⌃ + 0 - 줌리셋 ⌘ + ⇧ + A - 액션 메뉴 보이기(⌘ + 클릭) ⌘ + ⌃ + E - 이름 한번에 바꾸기 네비게이션 ⌘ + ⇧ + J - 현재 파일의 위치 보이기 ⌘ + ⇧ + O - 퀵오픈 ⌥ + click - 퀵헬프 ⌘ + T - 새탭 빌드 / 실행 ⌘ + R - 앱 실행 ⌘ + B - 빌드 ⇧ + ⌘ + K - 프로젝트 클린 ⌘ + . - 프로젝트 종료 검색 ⇧ + ⌘ + F - 프로젝트 내 검색 ⌘ + F - 파일 내 검색 ⌘ + G - 다음 찾기 시뮬레이터 ⌘ + S - 스크린샷 ⌘ + K - 시뮬레이터 키보드 ⌘ + ⬅(방향키) - 화면돌리기 ⌘ + ⇧ + H - 홈화면이동 ⌘ + ⌃ + Z - 디바이스 쉐이크 정리 주로 사용하는 단축키 위주로 정리해 봤습니다. 모르는 단축키도 알아가게되네요. 볼드체로 강조한 것은 정말 많이쓰는 기능이라 안쓰신다면 외워서 사용해보시길 추천드리

Xcode에서 storyBoard없이 개발하기 - 뷰 하나 띄우기

이미지
storyBoard없이 개발하기 UIViewController를 storyBoard없이 만들기 IOS를 개발하다보니, storyBoard를 가지고 개발하는 경우와 없이 개발하는 방법 두 가지가 혼재되어있어, 이번 기회에 storyBoard없이 개발하는 방법에 대해 공부해보려 한다. 스토리 보드 없이 코드만으로 화면을 구성하려면, 스토리 보드만 지우면 되는게 아닌 메인 인터페이스 설정 및 코드상에서 window에 대한 설정을, 진입점을 잡아줘야 한다. 환경 설정 스토리 보드 지우기 -> 실행 (Thread 1: Exception: "Could not find a storyboard named ‘Main’ in bundle NSBundle) Project -> General -> Main interface -> 공백입력 info.plist -> Application Scene Manifest -> Storyboard Name -> 줄 전체 삭제 -> 실행 (Thread 1: Exception: "Invalid parameter not satisfying:) iOS 13 이상만) iOS 13 이전에는 모든 장면 기능이 AppDelegate.swift 클래스에 있었으며 이제는 SceneDelegate.swift라는 별도의 클래스에 있습니다. SceneDelegate.swift 에서 프로젝트를 설정하겠습니다. 아래와 같은 코드를 SceneDelegate.swift 에서 작성(수정)합니다. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene as? UIWindowScene) else { return }

[xcode] quick help (주석 설명) 사용 방법

이미지
xcode quick help 사용 방법 Xcode에서 Option + Left-click 을 통해 프로퍼티나 메소드에 대한 정보를 얻을 수 있다. 이 정보를 quick help라고 한다. 아래와 같은 코드가 있을 때 quick help를 통해 어떤 정보를 얻을 수 있는지 살펴보자. struct Car { let speed: Int let modelName: String func stopCar() -> Bool{ return true } } let benz = Car(speed: 30, modelName: "benz") benz.stopCar() 메소드에서 quick help를 사용하면 선언된 간략한 정보들을 얻을 수 있다. 프로퍼티의 경우에는 선언 부분을 볼 수 있고, 메소드의 경우에는 매개변수와 반환 값 등을 볼 수 있다. Declaration : 프로퍼티나 메소드의 정의 부분을 보여준다. Parameters : 매개변수의 정보를 보여준다. DeclaredIn : 어느 파일에 선언되어 있는지 보여준다. 사용자가 주석 블록을 추가함으로써 quick help에 더 많은 정보를 넣을 수 있다. 예를 들면 Parameters의 주석의 블록은 /** */ 기호 사이에 설명을 넣을 수 있다. 다음과 같은 형태를 가지며, 스트럭트의 경 요약과 설명을 메소드의 경우 매개변수와 에러핸들링 반환 값에 대한 설명을 추가할 수 있다. /** Summary에 해당하는 내용 Discussion에 해당하는 내용 - parameters: - grade: 학년 - Throws: 여러 에러가 발생할 수 있습니다. - returns: 학년을 반환합니다. */ 아래의 코드에서 grade가 학생의 점수인지, 학년인지 모호할 수 있기 때문에 주석으로 설명을 넣어주면 좀 더 명확해진다. 물론 이름을 잘