앱만들기 강의는 mac 이 없을때여서 예습을 하지 못했기 때문에 이번주는 복습(즉 원래진도)에 집중하기로 함
메서드 디스패치 부분 다시 봐도 재미있다..!
이해가 잘 되게 설명해주셔서 납득하면서 학습할수 있어서 좋았다.
뒤에 내용을 대략 알고 들으니 더 예제의 의미를 알고 학습할수 있는 장점도 있었다.
구조체와 클래스의 차이의 대부분은 메모리동작 영역에서의 차이때문에 발생한다고 생각하면 이해가 쉬워지는 듯 하다.
구조체는 애초에 스택 영역에 인스턴스(내부 저장속성 포함)를 저장하고,
클래스는 힙 영역에 인스턴스를 저장하고 스택에는 이 인스턴스의 속성들의 메모리주소를 저장하여 인스턴스를 가르키기 때문에 발생하는 차이들이 있다.
기본적으로 힙 영역에 저장하는 타입들(reference 타입들로 클래스와 클로저가 있다) 은 오래 사용하고자 하는 목적이 있기 때문에, 해당 목적일때 혹은 상속등의 옵션을 활용해야 하는 목적일때만 클래스를 사용하는 게 바람직하다. (왠만하면 구조체 사용을 권장하는 이유가 있다)
클래서의 메소드디스패치 부분을 좀 더 자세히 알게되었다.
DICE앱 만들기 간단히 구현
#imageLiteral(
이런식으로 이미지 input을 하는 부분에서 여러 이미지를 요소로 써서 [UIImage] 배열로 작성할때는 꼭
이미지, 이미지, 이런식으로 컴마 후 스페이스를 띄어서 작성해주어야 input도 쉬워지고 에러도 안난다.
처음에 컴마가 잘 안되어서 어거지로 복사 붙여넣기로 구현하다가 스택 오버 에러가 발생했다(xcode가 인식할때 ..뭔가 다르게 인식하는 듯)
exc_breakpoint (code=1
해당 에러 메시지는 스택이 깨졌을 때 발생한다고 한다. 지역 변수의 주소를 통해 해당 주소에 무언가를 기록하려 할 때 지정된 크기를 넘어서 기록하려는 상황에서 발생 한다고 하니 뭔가..문제가 있었던 듯 ^_^
diceArray.randomElement() 로 구현해도 되는데 메서드가 익숙하지 않아서
diceArray.[Int.random(in: 0...5)] 와 같이 구현하기도 했다.
둘다 정상작동 하긴하지만 기왕 구현잘되어있는 메서드를 써보는 것도 좋겠다.
뭔가를 만드니 좀 더 재밌다
호박 JMT