FRONT-END/iOS39 Swift 확장(Extensions) 복습 : 상속은 본질적으로 성격이 비슷한 타입을 새로 만들어 데이터를 추가하거나 기능을 변형시켜 사용하는 것을 의미 확장 (Extension) 클래스/구조체/열거형에 모두 가능하며 extension 키워드를 사용 현재 존재하는 타입에 기능(메서드 형태)을 추가해 사용하는 것을 의미, 수평 확장 본질적으로 기존의 메서드 테이블 외 따로 메서드를 추가하는 것 기존 메서드 재정의는 불가능 단, @objc 키워드를 사용하면 가능해지긴 함 확장이 정의되기 전 생성된 경우에도 기존 인스턴스에서 새 기능 사용 가능 장점은 애플이 미리 만들어놓은 클래스/구조체/열거형 같이 원본 소스 코드에 대한 엑세스 권한이 없는 유형을 확장해 내가 원하는 메서드를 사용할 수 있도록 구현이 가능함 (소급 모델링 retroactive .. 2023. 8. 1. Swift 타입캐스팅(Type Casting) is연산자 (type check operator) 타입에 대한 검사를 수행하는 연산자 A is B : B는 A의 인스턴스인지 타입 확인하는 것 as 연산자 Person() -> Student() -> Undergraduate() as? / as!(강제) : 다운캐스팅 as? / as!(강제) => 다운캐스팅 Undergraduate 인스턴스를 생성하는데, 아래 코드와 같이 상위 클래스 Person으로 타입을 지정해 선언했던 것의 타입을 Undergraduate 타입으로 바꾸는 것을 의미 let person: Person() = Undergraduate() if let newPerson = person as? Undergraduate { // } as : 업캐스팅 Bridging(브릿징) : 서로 호환되.. 2023. 7. 31. 클래스의 상속, 초기화, 생성자 상속의 의미 성격이 비슷한 타입을 새로 만들어 데이터를 추가하거나 기능을 추가 및 변형해 사용하는 것 상속하는 문법 : class 새로운 클래스명 : 상속하고자 하는 클래스명 {} 상위 클래스에서 존재하는 멤버를 변형하는 것은 재정의라고 함, override 키워드 사용해야함 Swift에서는 다중 상속은 불가능 class 선언 시 앞에 final 키워드를 붙이면 상속이 불가능하게 만들 수 있음 변수 앞에 final 키워드를 붙이면 재정의 불가의 의미 클래스 용어 정리 기본(Base) 클래스 : 다른 어떤 것도 상속받지 않은 클래스 부모(Parent) 클래스 | 슈퍼 클래스 | 상위클래스 자식(Child) 클래스 | 서브 클래스 | 하위 클래스 재정의 : 상위 클래스의 변수를 변형하는 것을 의미함, 저장 .. 2023. 7. 31. Swift 간단한 앱을 만들 때 알면 좋은 기초 문법들 이미지 넣는 방법 Assets 폴더에 사용하고자 하는 이미지 넣기 [코드 내 이미지를 불러와 사용하는 방법] #imageLiteral() 이미지 값을 넣는 방법으로 코드 내 UI로 직관적이게 이미지를 확인 할 수 있음 UIImage(named: String) 이미지의 이름을 활용해 넣는 방법 사용자 입력 받기 readLine() 사용자의 입력을 받아 해당 값으로 처리할 수 있는 것 JavaScript의 window.prompt()와 유사한 것으로 볼 수 있음 2023. 7. 26. XCode 단축키 모음 줄맞춤 단축키 Command + A(전체선택) => Control + I Command + Shift + Y => Debug 창 Command + Shift + L => Library Control Option Command Enter => Assistent 2023. 7. 26. Swift 코드로 알아보는 싱글톤(Singleton) 패턴 싱글톤 패턴이란? 메모리상에 유일하게 1개만 존재하는 객체를 설계하는 것을 의미 싱글톤 패턴이 필요한 이유 앱 구현시 유일하게 1개만 존재하는 객체가 필요한 경우에 사용 실제 UIScreen.main 처럼 apple이 싱글톤 패턴으로 만들어 놓은 것을 활용해 사용하게 됨 class Singleton { static let shared = Singleton() // 데이터 영역에 유일한 객체의 주소가 담기게 됨 var id = 123 private init() {} } // 접근하는 순간 lazy하게 동작하여 메모리에 올라감 Singleton.shared object1 = Singleton.shared object1.id = 126 Singleton.shared.id // 126 object3 = Sing.. 2023. 7. 26. 이전 1 2 3 4 5 6 7 다음