강의중 뷰선언을 클로저로 하는 것을 보았다. 연산프로퍼티와 유사해보였다. 비교를 해보자.다음과 같이 클로져를 이용한 선언과 연산프로퍼티를 이용한 선언이 있다. 연산프로퍼티는 반복 호출해도 계속 연산 수행하는역할을 한다. 클로저를 통한 저장 프로퍼티는 값을저장하는게 목적
nonspecific type을 위해 swift 가 제공하는 타입.anyobject - 클래스 타입일때 사용하자.any - 어디에나 사용.
is 는 타입이 같은지 알아낸다.또는 클래스일 경우 서브클래스 인지 알아낸다.업캐스팅하여 cats변수에 인스턴스들을 담고 타입을 확인한다.맨위의 if 절에서 모두 Cat클래스에 상속되므로 채택된다. 저 if 절이 없을경우 출력은 다음과같다.타입과 호환된다면 그 타입으로
switch와 enum을 공부하기위해 error와 여러가지 struct를 구성했다. enum은 다음과 같이 일반 struct로 구성했을 때 보다 파라미터를 커스텀하게 구성할 수 있도록 도와줄때가 있다. student5스트럭트는 모든 파라미터를 기입해야해서 몇가지만
if let이 옵셔널 바인딩 한다고 오류도 잡아낼거라고 착각했다.
for a in array {}a는 복사된값을 가지고 있다. 즉 참조값이 아니므로, 변경해도 문제없다. 그러나 remove하고 그 값을 참조하는것은 위의 오류처럼 당연히 되지않는다.
mutating과 inout이 헤깔려서 잠시 비교해보았다.구조체 내부 데이터 변화시에는 mutating을, 함수 매개변수의 변화시에는 inout을 사용하자.
내 코드:위으 코드중에서,이 부분은 다음과 같이 쉽게 표현할 수 있다.깨달은점:1\. prefix,suffix 를 통해 스트링 앞뒤 가져갈 수 있다.2\. 3phone_number가 string 이더라도 결과는 "1",3"... 로서 ARRAY로 출력된다는 사실. 따라
처음본 사용법.pyy -> "" , y , y \-> p , "" , ""
coredata가 저장되는 폴더를 들어왔고 json으로 저장하였다.
present를 통해 뷰컨트롤러로 이동했다. 그 컨트롤러에서 popview는 위의 코드처럼 topviewcontroller를 출력했을때 소용없음을 확인했다. 따라서 push와 pop을 이용해야한다. stack에서 당연한 표현이긴 하다..
IBOutlet연결되 있는 객체 복사하면 복사한 객체도 연결이 되어있다. 복사하더라도 지우고 사용하자.
복제해놓았던 파일 때문에 파일이 옳바르게 형성되지않았다. 하나의 프로젝트 파일만 있도록 하자.
nil이 나올 수 없는 상황에도 nil이 나올 수 있다. 따라서 강제 언래핑 보다 안전한 언래핑 하자.
다음은 0 + 1...6 + 0 이 생각보다 이상한 결과를 가져온다는것을 알고 바꾼 코드이다.