iOS

[iOS] 함수와 매서드

코딩하는둥이 2023. 10. 15. 23:56

함수

: Swift에서 함수는 코드 블록으로, 특정 작업을 수행하기 위해 사용된다. 함수는 입력 매개변수를 받아들이고, 작업을 수행한 후 결과값을 반환할 수 있다.

func functionName(parameter1: Type, parameter2: Type, ...) -> ReturnType {
    // 함수 내부에서 수행할 작업
    return value // 반환값 (ReturnType에 해당하는 타입)
}

 

함수 선언법

func addNumbers(a: Int, b: Int) -> Int {
    let sum = a + b
    return sum
}

: 위 예제에서는 "addNumbers"라는 이름을 가진 함수를 선언하였다. 이 함수는 "a"와 "b"라는 두 개의 정수형 매개변수를 받고, 정수형 값을 반환한다. 함수 내부에서 수행되는 작업은 중괄호({}) 안에 작성된다. 위 예제에서는 입력받은 두 정수를 더한 후 그 결과값을 반환하고 있다. 함수 선언이 완료되면 해당 함수를 호출하여 사용할 수 있습니다.

 

c언어 -> swift언어로 변경 실습

//C언어
#include <stdio.h>

int addNumbers(int a, int b) {
    return a + b;
}

int main() {
    int result = addNumbers(5, 3);
    printf("%d", result); // 출력 결과: 8
    return 0;
}
//swift언어
func addNumbers(a: Int, b: Int) -> Int {
    return a + b
}

let result = addNumbers(a: 5, b: 3)
print(result) // 출력 결과: 8

 

 

함수의 타입 알아보기

func addNumbers(a: Int, b: Int) -> Int {
    return a + b
}

print(type(of: addNumbers)) // 출력 결과: (Int, Int) -> Int.Type

 

함수명과 함수자료형

 

: iOS에서 테이블 뷰를 사용하려면 UITableViewDataSource와 UITableViewDelegate 프로토콜을 구현해야 한다. 이 프로토콜들은 테이블 뷰의 데이터 소스와 동작을 관리한다. 가장 많이 사용되는 몇 가지 메서드는 다음과 같다.

-numberOfSections(in:) -> Int: 테이블 뷰에 있는 섹션의 수를 반환한다. 이 메서드를 구현하지 않으면 기본값으로 1이 사용된다.
-tableView(_:numberOfRowsInSection:) -> Int: 각 섹션에 있는 행의 수를 반환합니다.
-tableView(_:cellForRowAt:) -> UITableViewCell: 지정된 위치에 표시할 셀을 요청합니다. 이 메서드는 반드시 구현해야 한다.
-tableView(_:didSelectRowAt:): 지정된 행이 선택되었음을 델리게이트에게 알린다.
-tableView(_:heightForRowAt:) -> CGFloat: 지정된 위치의 셀의 높이를 반환한다.

class MyTableViewController: UITableViewController {
    
    let data = ["First", "Second", "Third"] // 예시 데이터
    
    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifier", for: indexPath)
        cell.textLabel?.text = data[indexPath.row]
        return cell
    }
    
    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("Selected row at index \(indexPath.row)")
    }
    
    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 44 // 기본 셀 높이
    }
}

위 예제에서 "CellIdentifier"는 스토리보드에서 설정한 재사용 가능한 셀 식별자이다.

 

옵셔널 바인딩

: Swift에서 옵셔널(Optional)은 값이 있을 수도 있고, 없을 수도 있는 상황을 처리하기 위한 특별한 타입이다. 옵셔널 변수에 값이 없는 경우, 이는 nil로 표현된다. 옵셔널 바인딩(Optional Binding)은 옵셔널에 값이 있는지 확인하고, 만약 그렇다면 그 값을 일시적으로 상수나 변수에 할당하는 과정이다. 이를 통해 안전하게 옵셔널의 값을 추출할 수 있다. 예를 들어, 아래와 같은 String 옵셔널이 있다고 가정한 예를 들면,

var optionalString: String? = "Hello, world!"

위의 optionalString은 값이 존재할 수도 있고, nil일 수도 있는 String 타입의 옵셔널이다.
옵셔널 바인딩을 사용하여 안전하게 값을 추출하는 방법은 다음과 같다.

if let unwrappedString = optionalString {
    print(unwrappedString)
} else {
    print("The optional string is nil.")
}