오늘 보고 넘어갈것들
- 함수
- 클래스
- 프로토콜
1. 함수
1-1. 전달인자(argument) , 매개변수(parameter)
1-2. 메서드
1-3. 외부 매개변수 , 내부 매개변수 (매우 중요)
func add(x: Int, y: Int) -> Int
{ return(x+y) }
print(add(x: 10,y: 20))
//외부 매개변수가 없으므로 내부매개변수가 외부 역할도 겸함
func add(first x: Int, second y: Int) -> Int
{ return(x+y) }
print(add(first: 10, second: 20))
//first , second는 외부 매개변수, x,y는 내부 매개변수
func add(_ x: Int, _ y: Int) -> Int
{ return(x+y) }
print(add(10,20))
// 외부 매개변수 생략
// 사용 가능하지만 추천되지 않는 방법
func add(_ x: Int, two y: Int) -> Int
{ return(x+y) }
print(add(10,two: 20))
// 첫번째 외부 매개변수를 생략하고, 두번째부터 외부 매개변수를 사용하는 방법
// 제일 많이 쓰는 방법
TIP : 내부만 쓰고 호출하려고 하면 Xcode에서 외부를 써야 한다고 하면서 자기가 고쳐준다고 합니다.
T-1 : 하지만 리턴에서 쓸때는 무조건 내부로 써줘야 작동합니다. (밑의 사진 참조)
T-2 : 단, X표시인 경우에는 스스로 못고침, ●표시로 나오는 경우에만 fix가 나옴
T-3 : 당연하지만, 외부매개변수가 생략이 된상태에서 외부 매개변수를 호출하면 오류가 납니다.
T-1 에서 리턴에다가 외부를 쓰면 내부매개변수(xx,yy)를 찾을수 없다면서 오류가 납니다.
외부 매개변수가 생략된 상태에서 외부 매개변수를 호출해도 오류가 납니다
1-4. 함수명이 궁금할때? (#function)
func add(x: Int, y: Int) -> Int
{
print(#function)
return(x+y)
}
// add(x:y:)
1-5. 디폴트 매개변수 정의하기
1-6. 2개의 정수를 입력받아 가감제 리턴
import Foundation
func sss(x: Int, y: Int) -> (sum: Int, sub: Int, mul: Int, div: Double, mod: Int) {
let sum = x + y
let sub = x - y
let mul = x * y
let div = Double(x) / Double(y)
let mod = x % y // 나머지 계산
return (sum, sub, mul, div, mod)
}
let result = sss(x: 10, y: 3)
// 소수점 3자리에서 반올림
let roundedDiv = String(format: "%.3f", result.div)
print(result.sum)
print(result.sub)
print(result.mul)
print(roundedDiv)
print(result.mod)
print(type(of:sss))
// (Int, Int) -> (sum: Int, sub: Int, mul: Int, div: Double, mod: Int)
1-7. 가변 매개변수
2. 클래스 (class)
https://en.wikipedia.org/wiki/Class_(computer_programming)
Class (computer programming) - Wikipedia
From Wikipedia, the free encyclopedia Specification of an object In object-oriented programming, a class defines the shared aspects of objects created from the class. The capabilities of a class differ between programming languages, but generally the share
en.wikipedia.org
2-1. struct vs class
2-2. 프로퍼티 (property)
https://docs.swift.org/swift-book/documentation/the-swift-programming-language/properties/
Documentation
docs.swift.org
2-3. 저장 프로퍼티 정의하기
TIP : 초기값이 없으면 오류가 납니다. (경고창에 가려져서 그렇지 위의 클래스문이 작성된 상태)
2-4. 인스턴스 초기화 : init()
TIP : init()을 하나라도 직접 만들면 디폴트 이니셜라이저는 사라집니다.
(var age , var weight에 있는값인 1,3.5가 그냥 사라짐)
2-5. 부모 클래스와 자식 클래스
2-6. super 사용
3. 프로토콜
3-1. delegate
3-2. delegation
3-3. 프로토콜 사용
(클래스는 부모클래스를 사용하면 상속이라고 하지만, 프로토콜을 사용하면 채택이라고 합니다.)
3-4. 프로토콜 정의 , 프로퍼티와 메서드 선언
3-5. 프로토콜 채택 , 준수
4. Xcode 기반 이해
(chatGPT를 이용한 설명들이니 가볍게 둘러보시면 됩니다.)
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
}
4-1. 초기 ViewController.swift
import UIKit // UIKit 프레임워크를 가져옵니다. UIKit은 iOS 앱의 사용자 인터페이스를 만들 때 사용하는 필수적인 프레임워크입니다.
class ViewController: UIViewController {
// ViewController라는 클래스를 정의합니다. ViewController는 화면(뷰)을 관리하는 역할을 합니다.
// viewDidLoad 메서드는 ViewController가 메모리에 로드될 때 호출되는 메서드입니다.
override func viewDidLoad() {
super.viewDidLoad() // 부모 클래스인 UIViewController의 viewDidLoad 메서드를 호출하여 기본적인 초기화 작업을 수행합니다.
// 여기에서 뷰가 로드된 후에 수행할 추가적인 설정이나 초기화 작업을 할 수 있습니다.
// 예를 들어, UI 요소를 설정하거나 데이터를 불러오는 등의 작업을 할 수 있습니다.
}
}
4-2. AppDelegate.swift 파일의 일부
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {}
func application(_ application: UIApplication,
// 외부 생략, 내부매개변수(application)
configurationForConnecting connectingSceneSession: UISceneSession,
// 외부 : configurationForConnecting , 내부 : connectingSceneSession
options: UIScene.ConnectionOptions) -> UISceneConfiguration {}
// 하나뿐이므로 외 ,내부 : options로 동일, UISceneConfiguration {}는 자료형
TIP : 이걸 외부 매개변수와 내부 매개변수를 구분할수 있다면 함수의 기초를 완벽하게 다질수 있습니다.
그외에 질문을 해보면 좋을거 같은것들을 정리해 보았습니다.
1. func application(_ application: UIApplication, 에서 application앞에 _는 왜 붙어있는거야?
2. 아규먼트(argument)와 파라미터(parameter)를 구분하는 언어를 모두 알려줘
3. override 키워드의 사용법을 swift,java,c#,c++ 언어들에서 예시를 만들어서 설명해줘
4. 객체지향언어에서 가장많이 사용하는 디자인 패턴을 순서대로 알려줘
protocol Run {
var x : Int { get set }
func run()
}
class Man : Run {
var x: Int = 1
func run()
{ print("Running") }
}
var kim = Man()
kim.run()
5. 이 소스가 뭐하는건지 간단하게 설명해줘
6. swift언어에서 상속과 프로토콜을 사용하는 쉬운 예시를 작성해서 설명해줘
7. iOS 테이블뷰에서 부모 클래스와 프로토콜이 사용되는 방법을 쉽게 설명해줘
'실무 (iOS)' 카테고리의 다른 글
iOS프로그래밍 실무 (6주차) [옵셔널 체이닝 , Error handling , generic , array] (0) | 2025.04.10 |
---|---|
iOS 프로그래밍실무 (5주차) [프로토콜,Xcode 앱만들기] (0) | 2025.04.06 |
iOS프로그래밍 실무[3주차] 앱 만들기 복습 (0) | 2025.03.25 |
iOS 프로그래밍 실무 (2주차) [자료형,Tuple,Optional,연산자,제어문, 그 외 기타] (0) | 2025.03.15 |
iOS 프로그래밍 실무 [1주차] (0) | 2025.03.09 |
댓글