안녕하세요 :)
회사에서는 java 로 백엔드 개발을 진행중인데요 ㅎㅎ
java 도 당연히 배워야할게 많은데 뭔가 크게 자극적이거나 재미를 못느끼고 있었어요 ㅠㅠ
그래서 개발 관련된거 꾸준히 배워야하는데 라는 생각을 하고 있던 중에
요즘 휴대폰으로 자주 하는 피크민이 생각이 나더라고요 ㅎㅎㅎ
아이폰으로 게임 개발을 한다기 보다는
아이폰에 걷는 거를 수집해서 피크민이 걷는 수를 측정해서 아이템을 줄텐데...
아이폰 어플 개발은 어떻게 하는걸까 ..? 라고 생각이 들어서 인프런에 아이폰 어플 개발 이라고 검색을 했습니다!
강의 중에서 가격대도 좋고 평이 좋은 강의를 선택했습니다!
"최완택" 강의 선생님이고요!
장점으로는
1편에 16,500원 으로 저렴하고 짧은 시간의 강의량이여서 금방 집중하고 코드 짜볼수있었습니다!
단점으로는
강의가 2018년도 강의라 xcode, swift 버전이 좀 많이 다른점 ㅠㅠ
swift 문법은 변경된 부분이 많이 없겠지만 xcode 버전 차이가 좀 나서
툴 사용하면서 없는 부분들은 구글링 하면서 찾았습니다! ( 그치만 개발 하면서 구글링은 중요한거니깐!! )
그런데 ! 강의를 들으면 문제점이 ... 점점 코더가 되는 느낌 ?
내가 머리를 굴리고 만드는게 맞나 ?
하는 느낌이 들어서 다음 강의는 구매하지 않고 eBook 으로 진행중입니다!
교보문고로 eBook 으로 구매했고요 !
그나마 인강보다는 최근이라서 xcode UI 대부분 비슷하고 책에서 제일 좋은점은
완전 xcode 기초부터 차근차근 꼼꼼하게 설명해줘서 진짜 좋았어요
책 읽은지 2일째인데 110페이지 보고 있습니다. 650 페이지 중에서 .....
차근차근 읽으면서 머리에 넣고 취미로 어플 만들어보기! 스트레스 받지 말기!!!!
책 보면서 공부하면 좋을것들 정리
Swift 프로젝트의 파일들 살펴보기 !
ImageView 라는 프로젝트를 만들어지면 사진처럼 폴더와 파일들이 자동으로 만들어집니다!
( ImageViewTests, ImageViewUITests 폴더는 바로 사용하지 않으므로 패스~ )
처음 시작할때 만지는 파일들 분홍색으로 표시!
- AppDelegates.swift : 앱의 실행 주기 (Life Cycle)를 관리하는 내용의 스위프트 소스 코드가 들어 있는 클래스 파일입니다
앱을 실행하거나 종료 또는 백그라운드를 실행할 때 하는 일들을 관리합니다.
일반적으로 초보 단계일때 직접 코딩 ㄴㄴ
- Assets.xcassets : 앱의 아이콘들을 보관하는 장소 ( 어플 아이콘 또는 이미지 같은 파일들)
- Info.plist : 앱이 실행되는 데 필요한 정보를 저장하고 있는 파일
- LaunchScreen.storyboard : 앱이 실행 될 때 잠시 나타나는 스플래스 화면을 마드는 스토리보드
( 네이버, 다음 아이콘 키면 처음 로딩때 나오는 화면 )
-main.storyboard : 앱의 내용을 시작적으로 쉽게 이해하고 프로그래밍 할 수 있도록 그림으로 표현하는 파일
스토리보드를 통해 화면에 보이는 내용 및 뷰와 뷰 간의 연결 관계 표현
- SceneDelegate.swift : 사용자 인터페이스의 실행 주기를 관리하는 내용의 스위프트 소스 코드가 들어있는 클래스 파일입니다.
일반적으로 초보 단계 직접 코딩 ㄴㄴ
- ViewController.swift : 화면에 보이는 뷰에서 처리하는 내용의 스위프트 소스 코드를 담고 있는 클래스 파일
일반적으로 개발자는 이 파일에서 코딩 하게 되며 뷰 하나당 클래스 하나가 대응됩니다.
그러므로 스토리보드에서 여러개 뷰를 추가하면 뷰의 개수 만큼 뷰 컼ㄴ트롤러 클래스 파일이 필요합니다.
+ 위에 사진에 보시면 내베게이터 영역 파일명 옆에 M 아이콘이 있습니다. [ M의 아이콘 ]
M : 이전 버전에서 파일이 수정 (Modified) 되었다.
A : 이전 버전에서 파일이 새롭게 추가 (Added) 되었다.
Xcode의 화면 구성 살펴보기
1. 내비게이터 영역 : 프로젝트 내비게이터, 심벌 내비게이터, 검색 내비게이터, 이슈 내비게이터, 테스트 내비게이터, 디버그 내비게이터 , 브레이크 포인트 내비게이터, 리포트 내비게이터 , 브레이크 포인트 내비게이터, 리포트 내비게이터 등 정보를 나타내주는 영역입니다.
1번 파일을 클릭하면 2번 영역에서 나타납니다.
2. 편집기 영역 : 소스 파일을 열어 소스를 직접 입력하거나 스토리보드를 이용하여 화면 디자인 하는 영역
3. 인스펙터 영역 : 스토리보드를 편집할때 버튼, 컨트롤러, 뷰 등 모든 객체의 속성 편집
4. 디버그 영역 : 버그를 찾아 수정하는 과정인 디버그를 진행 할때 우너하는 변수의 값을 확인하거나 테스트할 목적으로 사용한 입출력 내용이 출력되는 영역입니다.
디버그 창은 왼쪽 변수 영역 | 오른쪽의 영역은 콘솔 영역으로 구성되어있습니다.
미니맵 옵션 - 미니맵 감추거나 보여줍니다.
스토리보드 윗쪽 아이콘 중에 정렬 모양처럼 생긴 아이콘 클릭하면 아래 부분에 미니맵이 선택되어있는거 확인 가능합니다!
체크한거를 없애주면 미니맵 사라져요!!
아울렛 변수와 액션 함수 사용해보기
아울렛 변수와 액션 함수란 ?
스토리보드에 추가한 객체를 선택하고
내용을 변경하거나 특정 동작을 수행하도록 하기 위해서는 해당 객체에 접슨 할 수 있는 변수인 '아웃렛 변수' 와
동작을 정의한 함수인 '액션 함수'가 필요합니다.
예를들면 텍스트 필드에 이름을 입력하면 입력한 텍스트를 받아 저장할 변수를 만들고 ㅁ나든 변수와 텍스트 필드를 연격ㄹ 시켜줘야합니다. 이런 변수를 아웃렛 변수!!!
클릭 이벤트가 필요한 버튼 경우에 액션 함수라고 합니다!
아울렛 변수 / 액션 함수 등록 하는 방법 !
레이블에 아웃렛 변수 추가하기
레이블을 마우스 오른쪽 버튼으로 선택 후 오른쪽 보조 편집기 영역에 드래가 하기
또는 control 누른 상태에서 마우스 온쪽 버튼 으로 선택한 후 드래그 도 가능함 !
대부분 아웃렛 변수 선언은 위쪽 상단에 , 액션 함수는 아래 부분에 선언하는 경우가 대부분임
드래그를 했다면 창이 떠요!
원하는 아울렛이 맞는지 체크 , 해당 변수 이름 벙해주고 타입 정해주기!
아울렛 변수와 액션 함수 사용되는 문법 뜯어보기 !
객체에 해단 속성을 지정할 때는 아웃렛으로, 객체에 이벤틀르 넣고 싶을 때는 액션으로 연결합니다
아울렛 변수 문법 !
@IBOutlet var pickerView: UIPickerView! // strong 으로 선언
@IBOutlet weak var pickerView: UIPickerView! // weak 로 선언
차근차근 앞부터 설명 하겠습니다.
@IBOutlet : @IBOutlet 으로 정의된 변수를 아웃렛 변수라고 부릅니다.
여기서 IB는 Interface Builder 의 약자로, @IB 로 시작되는 변수나 함수는 인터페이스 빌더와 관련된 변수나 ㅎ마수라는 것을 의미.
@IBOutlet 은 객체를 소스 코드에서 참조하기 위해 사용되는 키워드이다.
var pickerView : 변수를 선언 할때 var 키워드를 사용합니다. var 뒤에 변수의 이름 (pickerView) 라고 정혀져있습니다.
선문운에서 콜론 (:) 은 변수 타입을 지정하는 부분입니다
apple Swift 스타일 가이드에서는 가독성을 위해 클론 앞에는 공백을 두지않고
뒤에만 공백을 두는 것을 권장 합니다!
UIPickerView 가 변수인데 뒤에 느낌표가 뭐지 ???
Swift 변수나 상수 뒤에 붙는 느낌표(!)는 암시적 옵셔널 언래핑 이라고 합니다.
옵셔널 이란 ?
Swift 값이 존재 할 수 도 있고, 없을 수도 있는 상태를 표현하기 위해 옵셔널 타입을 선언합니다.
var name: String?
! 의 역할
느낌표 (!) 는 두가지 용도로 사용됩니다.
1. 강제 언래핑
옵셔널 변수 뒤에 ! 붙이면 " 이변수에 반드시 값이 있으니 그냥 사용해라" 라고 Swift 에게 명령합니다.
var name: String? = "John"
print(name!) // "John"
2. 암시적 옵셔널 언래핑
변수 타입에 ! 사용하면, 언래핑 하지 않아도 값을 바로 사용 할 수 있는 옵셔널을 선언합니다.
@IBOutlet var pickerView: UIPickerView!
stong / week : 아울렛 변수를 추가 할 때 나타나는 팝업 창의 Storage 라는 항목에서 strong 과 weak 둘 중에서 선택 할 수 있습니다
이 두가지는 메모리 회수 정책을 나타내는 키워드입니다.
일반적으로 객체를 참조하기 위한 아웃렛 변수는 strong 사용하는데, Xcode 에서도 strong 이 기본값으로 선택되어있습니다.
weak 아웃렛 변수를 선언하면 다음과 같이 변수정의 앞에 weak 추가되지만 strong 선택하면 아무런 키워드도 추가되지않습니다.
참고로 strong 으로 선언된 변수는 다른 곳에서 참조 하고 있을 경우 메모리제엇 제거 되지 않지만
weak로 선언된 변수가 다른 곳에서 참조 하고 있더라도 시스템의 임의적으로 메모리에 제거 할수 있습니다.
strong 선언한 변수끼리 상호참조 하는 일이 생길 경우에는 앱이 종료 되기 전까지 메모리에서 제거 되지 않기 때문에 메모리 누수 발생
weak 로 변수명을 지정하면 시스템의 임의적으로 제거할 수 있으므로 상호 참조할때에도 사용하지 않을 경우 메모리가 삭제 될수도 있습니다.
액션 함수 문법 !!
@IBAction func btnSend(_ sender: UIButton) {
lblHello.text = "Hello, " + txtName.text!
}
@IBAction : 객체의 이벤트를 제어하기 위해 사용하는 키워드로,
@IBAction으로 정의된 한숨를 액션 함수라 부릅니다. 버튼을 누르거나 피커가 선택되는 등, 특정 객체에서 원하는 이벤트가 발생했을때
정해진 작업을 실행하기 위해 사용합니다.
func btnSend : 함수를 선언할 때 func 키워드를 사용해서 선언합니다. 뒤에 함수 이름 btnSend 입력하여 선언
(_ sende: UIButton) : 액션 함수가 실행 되도록 이벤트를 보내는 객체, 즉 여기서는 버튼 객에체서 이벤트가 발생했을때 해당 액션 함수를 실행 시킬 것이므로 UIButton 클래스 타입을 선택합니다
** 여기서 _ 이건 뭐냐 ???
"_" (underscore)
Swift 는 함수 호출시 넘기는 파라미터 앞에 라벨을 생략하기 위해 _를 사용합니다!
Do it! 스위프트로 아이폰 앱 만들기 책 보면서 공부한 내용입니다!
1장 부분 위주로 정리했고
제가 모르는 부분에 대해서 책 보면서 정리했습니다~!