728x90
λ°˜μ‘ν˜•

🚨 이슈

책을 λ”°λΌν•˜λ‹€ λ³΄λ‹ˆ, 버전이 λ§žμ§€ μ•Šμ•„μ„œ κ·Έλ ‡κ΅¬λ‚˜ ν•˜κ³  λ„˜μ–΄κ°”λ˜ λΆ€λΆ„ 쀑, κ·Έλž˜μ„œλŠ” μ•ˆλ˜λŠ” 뢀뢄이 μžˆμ—ˆλ‹€.

μ±…μ—μ„œ storyboardλ₯Ό μ–ΈκΈ‰ν•˜κ³ , 이λ₯Ό μ‚¬μš©ν•˜λŠ”λ°, 생각보닀 μ€‘μš”ν•œ 역할을 ν•˜κ³  μžˆμ—ˆλ‹€.

이 뢀뢄은 처음 ν”„λ‘œμ νŠΈλ₯Ό 생성할 λ•Œ, User interface 섀정을 'SwiftUI''κ°€ μ•„λ‹Œ, 'Storyboard'둜 μ„€μ •ν•΄μ•Ό ν–ˆλ‹€.

 

κ·Έλ ‡κ²Œ ν•˜λ‹ˆ, 이름은 쑰금 λ‹€λ₯΄μ§€λ§Œ, storyboardλ₯Ό μ‚¬μš©ν•  수 μžˆμ—ˆλ‹€ !

 

 

πŸ’» 문법 정리

아웃렛 λ³€μˆ˜ (Outlet Variable)

객체에 λŒ€ν•œ 속성을 지정할 λ•Œ μ—°κ²°
@IBOutlet weak var lblHello: UILabel!

@IBOutlet : @IBOutlet으둜 μ •μ˜λœ λ³€μˆ˜λ₯Ό μ•„μšΈλ › λ³€μˆ˜λΌκ³  λΆ€λ₯Έλ‹€.

  • IBλŠ” Interface Builder의 μ•½μžμ΄λ©°, @IB둜 μ‹œμž‘λ˜λŠ” λ³€μˆ˜λ‚˜ ν•¨μˆ˜λŠ” μΈν„°νŽ˜μ΄μŠ€ λΉŒλ”μ™€ κ΄€λ ¨λœ λ³€μˆ˜λ‚˜ ν•¨μˆ˜λΌλŠ” 것을 의미.
  • @IBOutlet은 객체λ₯Ό μ†ŒμŠ€ μ½”λ“œμ—μ„œ μ°Έμ‘°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” ν‚€μ›Œλ“œ.
  • 주둜 색상, 크기, λͺ¨μ–‘, μ„ μ˜ λ‘κ»˜, ν…μŠ€νŠΈ λ‚΄μš© λ“± 객체의 속성 μ œμ–΄μ— μ‚¬μš©λ¨.

var lblHello : λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ var ν‚€μ›Œλ“œ μ‚¬μš©. κ·Έ 뒀에 λ³€μˆ˜ 이름을 μ§€μ •ν•˜μ—¬ μ„ μ–Έν•œλ‹€.

UILabel! : μ„ μ–Έν•˜κ³ μž ν•˜λŠ” λ³€μˆ˜ νƒ€μž…μ„ λ‚˜νƒ€λƒ„.

  • μœ„ μ½”λ“œμ—μ„œλŠ” λ ˆμ΄λΈ” 객체에 λŒ€ν•œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λ―€λ‘œ UILabel 클래슀 νƒ€μž… 선택. (UI=User Interface)

strong / weak : 아웃렛 λ³€μˆ˜λ₯Ό μΆ”κ°€ν•  λ•Œ λ‚˜νƒ€λ‚˜λŠ” νŒμ—… 창의 'Storage' μ—μ„œ 선택할 수 있음.

  • λ©”λͺ¨λ¦¬ 회수 정책을 λ‚˜νƒ€λ‚΄λŠ” ν‚€μ›Œλ“œ
  • 일반적으둜 객체λ₯Ό μ°Έμ‘°ν•˜κΈ° μœ„ν•œ 아웃렛 λ³€μˆ˜λŠ” strong μ‚¬μš©. (default)
  • weakλŠ” λ³€μˆ˜ μ •μ˜ μ•žμ— μΆ”κ°€λœλ‹€.
  • strong으둜 μ„ μ–Έλœ λ³€μˆ˜λŠ” λ‹€λ₯Έ κ³³μ—μ„œ μ°Έμ‘°ν•˜κ³  μžˆλŠ” 경우, λ©”λͺ¨λ¦¬μ—μ„œ μ œκ±°λ˜μ§€ μ•Šμ§€λ§Œ, weakλŠ” λ‹€λ₯Έ κ³³μ—μ„œ μ°Έμ‘°ν•˜κ³  μžˆλ”λΌλ„ μ‹œμŠ€ν…œμ΄ μž„μ˜μ μœΌλ‘œ λ©”λͺ¨λ¦¬μ—μ„œ μ œκ±°ν•  수 있음.
  • λ©”λͺ¨λ¦¬ 관리 이슈 λ•Œλ¬Έμ— 두 가지 정책을 μ‚¬μš©.
    • strong으둜 μ„ μ–Έλœ λ³€μˆ˜λΌλ¦¬ μƒν˜Έ μ°Έμ‘°ν•˜λŠ” 일이 생길 경우, 앱이 μ’…λ£Œλ˜κΈ° μ „κΉŒμ§€ λ©”λͺ¨λ¦¬μ—μ„œ μ œκ±°λ˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬ λˆ„μˆ˜ λ°œμƒ.
    • 이런 경우, λ‘˜ 쀑 ν•˜λ‚˜λ₯Ό weak둜 μ§€μ •ν•˜λ©΄, μ‹œμŠ€ν…œμ—μ„œ μž„μ˜ μ œκ±°κ°€ κ°€λŠ₯ν•˜λ―€λ‘œ μƒν˜Έ μ°Έμ‘°ν•  λ•Œλ„ μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” λ©”λͺ¨λ¦¬ μ‚­μ œλ  수 있음.

 

 

μ•‘μ…˜ ν•¨μˆ˜ (Action Function)

객체에 이벀트λ₯Ό λ„£κ³  싢을 λ•Œ μ—°κ²°
@IBAction func btnSend(_ sender: UIButton) {
        lblHello.text = "Hello, " + txtName.text!
    }

@IBAction : @IBAction으둜 μ •μ˜λœ ν•¨μˆ˜λ₯Ό μ•‘μ…˜ ν•¨μˆ˜λΌκ³  λΆ€λ₯Έλ‹€.

  • 객체의 이벀트λ₯Ό μ œμ–΄ν•˜κΈ° μœ„ν•œ ν‚€μ›Œλ“œ 이닀.
  • λ²„νŠΌμ„ λˆ„λ₯΄κ±°λ‚˜, 피컀가 μ„ νƒλ˜λŠ” λ“± νŠΉμ • κ°μ²΄μ—μ„œ μ›ν•˜λŠ” μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ 정해진 μž‘μ—…μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ μ‚¬μš©.

func btnSend : ν•¨μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ func ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ μ„ μ–Έν•œλ‹€.

(_ sender: UIButton) : μ•‘μ…˜ ν•¨μˆ˜κ°€ μ‹€ν–‰λ˜λ„λ‘ 이벀트λ₯Ό λ³΄λ‚΄λŠ” 객체. 

  • μ—¬κΈ°μ—μ„œλŠ” λ²„νŠΌ κ°μ²΄μ—μ„œ μ΄λ²€νŠΈκ°€ λ°œμƒν–ˆμ„ λ•Œ ν•΄λ‹Ή μ•‘μ…˜ ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œν‚¬ κ²ƒμ΄λ―€λ‘œ UIButton 클래슀 νƒ€μž… 선택.

lblHello.text : λ ˆμ΄λΈ” 객체가 가지고 μžˆλŠ” 속성 쀑 ν…μŠ€νŠΈ λ‚΄μš©μ„ μ˜λ―Έν•˜λŠ” 속성.

txtName.text! : ν…μŠ€νŠΈν•„λ“œ 객체가 κ°–κ³  μžˆλŠ” 속성 쀑 ν…μŠ€νŠΈ λ‚΄μš©μ„ μ˜λ―Έν•˜λŠ” 속성.

  • 끝에 λΆ™λŠ” !λŠ” μ˜΅μ…”λ„ λ³€μˆ˜μ˜ κ°•μ œ μ–Έλž˜ν•‘μ„ 의미
  • μŠ€ν„°λ””μ—μ„œλŠ” !λ₯Ό μ‚¬μš©ν•˜μ§€ 말라고 ν–ˆλ‹€...

 


 

πŸ“ swiftμ—μ„œλŠ” λ¬Έμž₯ 끝에 ';' μƒˆλ―Έμ½œλ‘ μ„ 뢙이지 μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ 뢙인닀고 ν•΄μ„œ μ—λŸ¬κ°€ λ‚˜μ§„ μ•ŠλŠ”λ‹€ ^^

πŸ“ μƒμˆ˜μ™€ λ³€μˆ˜, ν•¨μˆ˜, λ©”μ„œλ“œμ˜ 이름 지정 κ·œμΉ™μ€ λ‹€μŒκ³Ό κ°™λ‹€.

  • 숫자둜 μ‹œμž‘ν•  수 μ—†μŒ
  • μ˜ˆμ•½μ–΄λ‚˜ ν‚€μ›Œλ“œλ‘œ λ“±λ‘λœ λ‹¨μ–΄λŠ” μ΄λ¦„μœΌλ‘œ μ‚¬μš©ν•  수 μ—†μŒ
  • μ΄λ¦„μ—μ„œ μ–΄λ–€ 역할인지 μ•Œ 수 μžˆμ–΄μ•Ό 함.
  • λͺ…사+동사 λ˜λŠ” μ „μΉ˜μ‚¬λ‘œ 이루어진 단어λ₯Ό μ—°κ²°ν•΄μ„œ μ‚¬μš©
  • 클래슀의 이름은 λŒ€λ¬Έμžλ‘œ μ‹œμž‘
  • λ³€μˆ˜, μƒμˆ˜, λ©”μ„œλ“œλŠ” μ†Œλ¬Έμžλ‘œ μ‹œμž‘

 

 

이둜써 첫째 λ§ˆλ‹Ή 끝 !!

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var lblHello: UILabel!
    @IBOutlet weak var txtName: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    
    @IBAction func btnSend(_ sender: UIButton) {
        lblHello.text = "Hello, " + txtName.text!
    }
}

 

πŸ“± κ²°κ³Ό

 

 

 

 

 

728x90

 

 

🍎 정리

swiftλ₯Ό ν•˜λ©΄μ„œ κ°€μž₯ λ†€λžλ˜ 점 쀑 ν•˜λ‚˜λŠ”, λ³€μˆ˜μ™€ ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•˜λŠ” λ°©μ‹μ΄μ—ˆλ‹€.

Storyboardμ—μ„œ 객체λ₯Ό λŒμ–΄ μ½”λ“œ νŽΈμ§‘κΈ°λ‘œ μ—°κ²°ν•˜λ©΄, μžλ™μœΌλ‘œ 일뢀 μ½”λ“œκ°€ μƒμ„±λœλ‹€.

λ˜ν•œ 이름과 Connection, type을 지정할 수 μžˆλ‹€λŠ” 것...

ꡉμž₯히 μ‹ μ„ ν•˜λ©΄μ„œλ„ μΆ©κ²©μ μ΄λ©΄μ„œλ„ νŽΈλ¦¬ν–ˆλ‹€. μ•½κ°„ μž¬λ―ΈμžˆκΈ°λ„ ν–ˆλ‹€..🫠

 

728x90
λ°˜μ‘ν˜•

+ Recent posts