Multi Developer SuHo

iOS 프로그래밍 15주차 본문

Swift 과제물

iOS 프로그래밍 15주차

Dreaming Developer Student 2023. 12. 12. 10:56
SMALL

Path 


Path(forResource:ofType:)





init(실패 할 수 있는 문장)


var x : Int?
x = 10
if let x = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x)
}
else {
print("nil")
}
var x1 : Int?
if let xx = x1 { //옵셔널 변수 x1이 값이 없어서 if문의 조건이 거짓이 되어 if문 실행하지 않고 else로 감
print(xx)
}
else {
print("nil")
}


'?' 옵셔널과 '!' 옵셔널은 주로 Swift 언어에서 사용되는 개념입니다.

'?' 옵셔널(Optional)은 값이 있을 수도, 없을 수도 있는 변수를 선언하는 방법입니다. 즉, 변수에 값이 할당되지 않았을 때 nil을 가질 수 있습니다. 이렇게 선언된 옵셔널 변수에 접근할 때는 반드시 안전하게 언래핑(Unwrapping) 해야 합니다.

반면에 '!' 옵셔널은 옵셔널 변수를 강제로 언래핑(Forced Unwrapping) 하는 방법입니다. '!'를 사용하면, 변수가 값이 있을 것이라는 확신이 있을 때만 사용해야 합니다. 만약 '!'를 사용하여 nil 값이 들어있는 옵셔널 변수를 언래핑하려고 하면 런타임 에러가 발생합니다.

간단히 말하면, '?'는 '값이 있을 수도, 없을 수도 있으니 주의하라'는 의미이고, '!'는 '값이 반드시 있을 것이다'는 확신의 의미입니다.


 


UIViewController는 iOS 개발에서 중요한 역할을 하는 클래스입니다. 이는 앱의 사용자 인터페이스를 관리하며, 화면에 보여지는 뷰와 그에 대한 동작을 제어합니다.

UIViewController의 주요 역할은 아래와 같습니다:

  1. 뷰 관리: 뷰 컨트롤러는 앱의 사용자 인터페이스를 구성하는 뷰들을 관리하며, 뷰의 로딩, 표시, 전환, 제거 등의 라이프 사이클을 관리합니다.
  2. 사용자 입력 처리: 뷰 컨트롤러는 사용자의 입력(터치, 제스처 등)를 받아 이에 대한 응답을 처리합니다.
  3. 데이터 조정: 뷰 컨트롤러는 데이터 모델과 뷰 사이의 중재자 역할을 담당합니다. 즉, 데이터 모델의 변경사항을 뷰에 반영하거나, 사용자의 입력을 데이터 모델에 반영하는 역할을 합니다.
  4. 화면 전환: 뷰 컨트롤러는 다른 뷰 컨트롤러로의 화면 전환을 관리합니다. 이를 통해 사용자는 앱 내에서 다양한 화면을 경험할 수 있습니다.
  5. 리소스 관리: 뷰 컨트롤러는 메모리 부족 등의 상황에서 적절하게 리소스를 관리하여 앱의 안정적인 동작을 지원합니다.

이러한 역할을 통해 UIViewController는 앱의 사용자 인터페이스와 사용자 경험을 관리하는 중요한 역할을 담당합니다.




class Man{
var age : Int = 1
var weight : Double = 3.5
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
init(age: Int, weight : Double){
self.age = age
self.weight = weight
}
}

class Student : Man {
//비어있지만 Man의 모든 것을 가지고 있음
}
var kim : Man = Man(age:10, weight:20.5)
kim.display()
var lee : Student = Student(age:20,weight:65.2)
lee.display()
print(lee.age)

상속을 하면 부모가 가지고 있는 것을 물려 받는다. (100% 물려 받지는 못한다)



class Man{
var age : Int
var weight : Double
func display(){
print("나이=\(age), 몸무게=\(weight)")
}
init?(age: Int, weight : Double){
if age <= 0 {
return nil
}
else {
self.age = age
}
self.weight = weight
} // failable initializer
}
var kim : Man = Man(age:10, weight:20.5)!
kim.display()
var lee : Man = Man(age:0, weight:3.5)!
lee.display()

Crash 발생함



import UIKit
import WebKit


class ViewController: UIViewController, WKUIDelegate {
    
    var webView: WKWebView!
    
    override func loadView() {
        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.uiDelegate = self
        view = webView
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        
        let myURL = URL(string:"https://www.apple.com")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)
    }
}



 let weight = Double(txtWeight.text!)!
            let height = Double(txtHeight.text!)!
            let bmi = weight / (height*height*0.0001) // kg/m*m

두번 강제 언래핑하는 소스

LIST