View

300x250

Swift 문법을 처음 공부하면서 여러 예제를 참고하다보니, 이전의 배웠던 java나 C# 등의 언어에서는 보지못했던 새로운 문법형식들이 등장해서 다소 낯설었습니다. 그래서 이런 문법들에 대해 찾아보았습니다. 제가 낯설다고 느꼈기때문에, swift를 처음 공부하는 사람이면 똑같이 낯설게 느끼지 않을까 하여 포스팅합니다. 처음 공부하는 사람이 작성했다고 해서 왔는데 어렵더라! 라는 말이 안나오게 이해한 내용까지만 작성하려해욤.

 

물론 저도 쌩판 처음 스위프트에 대해 공부를 하면서 작성하는 문서이기에, 잘못된 내용이 있을 수 있으니 혹시 있다면 댓글로 달아주시면 감사하겠습니다!


IBAction, IBOutlet의 역할

요점만 말하자면, 이 둘의 역할은 StoryBoard와의 연결고리를 담당한다. 변수나 함수를 정의할 때 앞에 @IBAction 또는 @IBOutlet 키워드를 통해 StoryBoard에서 버튼이나 레이블같은 컴포넌트와 연결이 가능하다.

IBAction은 Event가 일어난 경우 호출되는 Action을 정의해둔 것이고, IBOutlet은 값에 접근하기위한 변수라고 보면 편할 것 같다.

여기에서 Action, Outlet의 키워드에 대해서는 이해를 했는데 @IB는 왜 붙는건지, 뒤에 붙는 것들은 뭔지에 대해서 궁금해졌다. 이 이유로 이 포스팅을 시작했기에 이에 대해 작성해보고자 한다.

IBAction, IBOutlet의 정의

일단, Action과 Outlet은 어느정도 의미가 짐작이 된다. 말 그대로 Action은 입력이 들어왔을때 어떤 행동을 할 지를 나타내고 Outlet은 데이터를 가져오는 것이다. 앞에 있는 IB는 Interface Builder의 약자이다. 즉 IBAction은 Interface Builder를 통해 받아온 정보로 Action을 수행하겠다는 의미.

그럼 앞에 있는 @은 뭐지?

이것도 처음보는 문법중 하나여서 구글에 열심히 돌아다니며 찾아보았다. @이 구글의 고급검색도구인지는 모르지만 내용이 잘 안나와서 고생을 좀 했다.

 

@는 컴파일러에게 어떤 속성을 가지고있다고 전하는 역할을 하는 예약어이다. 컴파일러에게 @가 붙은 명령어에 대해 어떤 attribute가 부여되었음을 말한다. 아래의 예시처럼 속성이 부여된다.

@IBAction // Interface Builder와 연결된 Action이다.

@UIApplicationMain // App의 Main이 여기에 있다.

( 아마 Attribute의 at과 @의 at이 같아서 이렇게 지은게 아닐까… 너무 직관적이다.. )

 

따라서 @IBAction 의 속성이 func의 정의 앞에 붙어있다면, 이 함수는 Interface Builder에서 사용될 수 있고 UI로 연결이 가능하다는 의미를 가진다.

 

Unity에서 Button에 반응하는 메서드를 만들기 위해 public 으로 선언하고, Script가 아닌 Inspector에서 버튼에 메서드를 드래그&드랍 하여 연결하는 방식과 비슷하다고 생각된다.

 

물론 더 찾아보니 이 역할 뿐만 아니라 다른 역할도 하는 것으로 보인다. 그러나 문서를 찾아보니 아직은 공부할 때가 아닌 듯 하여 넘어가고, 후에 다시 등장하면 다뤄보려 한다.

뒤에 나오는 :UI~~ 은 뭘까?

간단하게 말하자면 UI 중에서 어떤 항목을 가리키도록 설정할것인가를 의미한다.

:UIButton이라면 버튼을 가리키기위해 사용될 것이고, :UILabel이라면 Label을 가리키기위해 사용될 것이다.

( 약간 다른 객체지향 언어에 나오는 Interface와 유사한 기능이라고 생각된다. C#에서는 상속과 인터페이스가 :로 연결된다 )

 

여기에서 Action이 호출되는 Event를 설정할 수 없는 항목의 경우, @IBAction 에 해당하는 항목을 가리킬 수 없다. UITextView의 경우, Outlet으로 데이터 ( text ) 는 옮길 수 있어도, Event를 생성할 수 있는 장치가 없기에 @IBAction으로 연결이 불가능하다.

그럼 !은 무슨 의미지?

Swift의 변수 뒤에는 ! 또는 ? 의 기호가 올 수 있다. 이를 Optional 이라고 한다. 이름 그대로 붙여도 되고 안붙여도 되는 선택사항이다. 이 Symbol을 변수 뒤에 붙여주면 Nil ( 다른 언어에서는 보통 Null ) 값이 들어갈 수 있는지 없는지를 미리 결정해줄 수 있다.

 

예를 들어

var message1: String = "Hello, World!" // ok

var message2: String? // ok

var message3: String // error 발생 (Nil값이 허용되지 않음)

 

문서와 자료를 찾아보니 현재 사용하는 !은 개발자가 이 변수에는 Nil 값이 들어갈 리가 없다고 확신한다! 할 때 사용해주면 되는 Optional Symbol 인 듯 하다. 그에 반해 ?는 여기에 Nil 값이 포함될 수 있다는 의미로 사용하면 된다고 본다.

 

물론 간단하게 찾아본 내용이기에 좀 더 Optional 에 대해 공부해 봐야겠지만, 이정도만 알아둬도 현재 상태에서 공부중인 강좌를 따라가기에는 무리가 없어보인다.

 

후에 공부를 하면 포스팅을 하고 이곳에 링크를 달 예정.


참고 자료

https://soooprmx.com/archives/5123

https://docs.swift.org/swift-book/ReferenceManual/Attributes.html

https://stackoverflow.com/questions/30081372/what-does-the-symbol-mean-in-swift

https://docs.swift.org/swift-book/ReferenceManual/Attributes.html

https://www.appcoda.com/beginners-guide-optionals-swift/

 

320x100
Share Link
reply
반응형
«   2024/05   »
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