반응형

[Swift 입문] 접근제어자


1. 접근제어

접근제어는 앱개발 뿐만 아니라, 프로그래밍에 있어서 기본이 되는 부분입니다.
특히, 내가만든 프로그램을 남들에게 공유하겠다는 목표를 갖고있다면, 필수적인 요소이죠.

접근제어는 프레임워크나 클래스등에서 꼭 필요한 부분만을 외부로 공개한다는 것이 핵심입니다.

다시말해 외부 접근자는 프레임워크나 클래스의 접근에 있어서 필요한 부분만을 보기 때문에 더욱 쉽고 올바르게 접근할 수 있고, 내부 설계자는 외부로 노출하기 꺼려되는 정보를 차단할 수 있다는 장점이 있습니다.

접근 수준

내부 접근여부

외부 접근여부

open

접근가능 (O)

접근가능 (O)

public 

접근가능 (O)

접근가능 (X)

internal (기본값 )

접근가능 (O)

접근불가 (X)

fileprivate 

같은 파일 내 접근가능 (X)

접근불가 (X)

private

접근불가 (X)

접근불가 (X)

( O, X 는 상속 및 Override의 가능 여부 )



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) Call by reference ( 참조에 의한 전달 )

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 9. Class 만들기 (생성, 상속)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 10. 열거형 Enum


반응형
반응형

[Swift 입문] 열거형(Enumeration) 사용하기


사실 남들이 짜둔 C코드에서 열거형을 많이 보았지만, 제대로 사용해본적이 없습니다...

아직 미숙한점이 많다는 것을 느끼는 부분이네요... ㅠㅠ


1. 열거형 만들기

열거형은 새로운 자료형을 선언해준다고 생각하시면 좋을꺼같습니다.



간단하쥬?


2. RawValue

아래와같이 열거형에 값을 넣어주는 것도 가능합니다.

그리고 이 값은 rawValue를 통해서 확인이 가능합니다.

Int형 뿐만 아니라 원하는 자료형으로 쓸 수 있으니, 잘만 쓴다면 편하겠죠?



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) Call by reference ( 참조에 의한 전달 )

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 9. Class 만들기 (생성, 상속)


반응형
반응형

[Swift 입문] Class 만들고 사용해보기


Swift는 볼수록 조금 규칙이 엄격한 파이썬이라는 느낌이 있네요. 

1. Class 만들기

Class를 표현할 때, 많이 사용되는 표현이 제품의 '틀'이라는 말을 씁니다.

예를들어 자동차의 번호판을 만드는 공장이 있다면, 여기서 class는 철판에 번호를 찍고 색을 입히는 기계일 뿐이지 번호판이 아닙니다.

번호판을 만들기전에, 용도에 따라 번호판의 색은 어떤것으로 할지, 숫자는 어떤게 들어가고, 문자는 어떤게 들어갈지 미리 전해서 번호판을 만드는 기계(Class)에 알려줍니다. 그 과정이 아래에 init이라는 함수로 초기값을 설정해 주는 부분이라고 할 수 있습니다.

그리고 class가 만들어낸 결과물이 아래에서 my_car1, my_car2라는 부분으로, 이게 하나의 번호판이 되는거겠죠.

죄송합니다. 설명은 번호판, 실제 코드는 자동차라니... ㅠㅠ



위에서 이런저런말을 하는 이유는 Car라는 클래스는 Car.id와 같은 방법으로 불러와서 값을 확인하는 용도가 아니라는 것을 말씀드리고 싶었기 때문입니다.


번호판을 만드는 기계가 어떻게 생겼는지가 뭐가 중요할까요? 우리는 만들어질, 그리고 만들어진 번호판에만 집중하도록 합시다.



2. 클래스의 상속

처음 자바라는 언어에서 상속을 봤을 때, 멘붕했던 기억이 나네요...

상속은 기존에 존재했던 클래스를 가져와서 새로운 기능을 추가하거나 기존의 내용을 수정하여 사용하는 방식이라고 생각하면 좋을꺼 같습니다.


위 코드에대해서 간단하게 설명하자면 아래와 같습니다.


부모클래스 : Game

자식클래스 : Phone_game

override : 부모 클래스에서 정의된 내용을 수정

super : 부모 클래스에서 사용된 변수를 의미


지금 눈으로 볼때 쓸때없어보이고 어렵기만 할 수 있지만, 코드를 예쁘게 짜기 위해서는 필수이니 꼭 기억해두고 응용합시다.



 추가) 구조체와의 큰 차이

구조체와 다르게 class는 객체를 참조하는 형태입니다. 클래스에 의해 만들어진 어떤 변수는 해당 객체의 주소값을 갖고있습니다.

따라서 
let car1 = Car()

let car2 = car1

과 같은 경우 car2와 car1는 동일한 객체를 참조합니다.


즉, car1의 내용을 변경하면 car2도 변경된다는 의미입니다.

추가) 소멸자

소멸자는 "deinit"를 사용합니다.

class가 역할을 다하고 메모리에서 사라질 때 수행됩니다.



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) Call by reference ( 참조에 의한 전달 )


반응형
반응형

[Swift 입문] 함수에서의 Call By Reference


Call by Reference란?

어떤 변수 X를 함수의 인자로 전달할 때, 실제로 X라는 변수가 함수의 인자가 되는 것인지 아니면 X=10이라고 할 때 10이라는 값이 복사되어 전달되는 것인지에 따라 결정된다.

Call by Reference -> 다른말로 참조에 의한 전달이라고 하는 이것은, 전자와 같이 실제 X라는 값이 존재하는 데이터의 메모리상의 주소값을 함수의 인자로 전달함을 의미한다.


즉, 함수에서 인자로 전달받은 값을 수정할 경우 실제 X라는 값이 변경된다는 의미이다.


(위에서 말했던 경우 중 후자에 해당하는 값의 복사는 Call By Value라고 부른다.)



무슨말인가? 아래의 경우를 보자.




위와같이 x라는 변수가 5라는 값을 갖고있을 때, 함수에서 해당 값을 변경하려고하면, 애러가 발생하는것을 볼 수 있다.


애러 원인은 num이라는 매개변수로 들어온 값은 let(==상수) 이므로 변경이 불가능하다는 이야기다.


그럼 어떻게 실제값을 변경할 수 있을까?


아래와 같이 inout 키워드와 '&'을 이용하면 해결이 가능하다.





우측에 변수 값을 보게되면, 5였던 값이 10으로 변경된 것을 볼 수 있다.


함수에 'inout' 키워드를 넣고, 인자를 전달할 때, x앞에 '&'을 붙여줌으로 해당 문제를 해결했다.


변수에 '&'를 붙여준다는 것은 x라는 값이 저장되어있는 메모리의 주소를 함수에 전달해 준다는 의미이다.


지금 이해하기 어렵다면, 일단 넘어가도 좋을듯하다.


2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] Tip) 줄바꿈 없는 print


반응형
반응형

[Swift 입문] print함수 사용시 자동 줄바꿈 사용안하기


C, C++ 등의 언어들과 다르게 파이썬, Swift와 같은 언어들은 출력함수인 print 함수를 사용할 경우 자동으로 줄바꿈을 수행합니다.

줄바꿈을 해서는 안될 경우 어떻게 해야할까?



머신러닝을 공부하면서 매일 사용하는 단축키 [ Shift + Tab ]은 사용하고자하는 함수의 설명을 보여주는 명령입니다.

swift에서는 [ Option + 궁금한 함수 클릭 ]을 통해서 위와같은 기능을 확인할 수 있습니다.

print함수를 Option버튼을 누르고 클릭하면 아래와 같은 화면을 볼 수 있습니다.



내용을 보면, print라는 함수는 출력을 원하는 값 [items 라는 것 외에도 separator와 terminator라는 인자를 입력받는 것을 볼 수 있습니다.


그리고 이때 두 인자의 기본값은 default라는 것으로 채워져 있습니다.


아래로 좀더 내려보니 terminator에 대한 예문도 있네요.




친절하게 적혀있는 예문들으보니 [ Separator ] 라는 녀석은 여러개의 출력값 사이에 들어가는 값이라는 것을 알 수 있고, [ terminator ] 라는 녀석은 출력 후 마침을 어떻게 할 것인지에 대한 정의임을 알 수 있었습니다.


terminator의 기본값이 "\n"이었나 보네요.



결과적으로 print("출력값", terminator: "")라고하면 자동 줄바꿈을 막을 수 있겠습니다.


2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)

2019/03/19 - [프로그래밍/Swift] - [Swift 입문] 8. Swift 함수 정의하기


반응형
반응형

[Swift 입문] Swift에서 함수를 정의하기


1. 함수 기본 정의

Swift에서는 func [함수명](전달인자 정의) -> 리턴값 { 함수내용 } 형태로 함수를 정의합니다.



위에 보시는 것처럼 함수를 정의하고 사용합니다.


특이하게도 정의한 함수를 불러와 사용하는데 있어서도 어떤 인자에 값을 넘겨 줄 것인지 명시해야한다는게 특징일 수 있겠네요.


흠... 불편한데? 라고 생각할 수 있습니다.


그래서 생략을 하는 방법이 있습니다.



이렇게 앞에 '_'(언더바)를 넣어주면 됩니다.


2. 함수 인자의 default 설정


Swift에서도 다른 언어와 마찬가지로 인자의 Default 값을 설정할 수 있습니다.




3. 여러개의 값을 인자로 넘기는 경우

함수의 인자로 넘어오는 값의 크기를 알 수 없는 경우가 있을 수 있습니다.

그럼 아래와 같이 넘어오는 인자의 타입 뒤에 [ ... ]을 붙여줘서 해결이 가능합니다.


위 그림에서 name은 한번은 3개의 값을, 다른 한번은 1개의 값을 얻습니다.


hi 함수는 name이라는 인자를 처리할 때 개수에 상관없이 하나의 배열의 값처럼 사용하는 것을 볼 수 있습니다.



일단 이정도로 함수 선언에 대한 부분은 마치겠습니다.


다음에는 Swift에서 사용하는 기본적인 함수들에 대해서 작성해보도록 하겠습니다.



2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 1. 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 2. Project 시작하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 3. 에뮬레이터로 앱 실행하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 4. 앱 아이콘 설정하기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 5. LaunchScreen 만들기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 6. Swift 문법 알아보기

2019/03/18 - [프로그래밍/Swift] - [Swift 입문] 7. Swift 문법 알아보기 (배열, 딕셔너리 등)


반응형

+ Recent posts