Starbucks Caramel Frappuccino
본문 바로가기
  • 그래 그렇게 조금씩

분류 전체보기260

19. Objective-C 다형성(polymorphism) [다형성, 오버라이딩, 업캐스팅, 다운캐스팅] 다형성은 말 그대로 형태가 다양하다는 것이다. 프로그래밍에서 다형성은 주로 클래스간의 상속관계가 있을 때 나타난다. 메서드 오버라이딩(Method overriding)같은 이름의 메서드라도 어떤 타입으로 참조하고 있는지에 따라 내부 동작이 달라진다.좀 더 정확히는 서브클래스에서 슈퍼클래스의 메서드를 재정의 하는 것을 말한다.즉 어떤 객체를 부모타입으로 참조하느냐? 본인 타입으로 참조하느냐에 따라 호출되는 메서드가 다른 것이다. 메서드 디스패치 테이블(Method Dispatch Table)옵젝씨에서 메서드는 메서드 디스패치 테이블을 통해 관리된다.(내부적으로는 클래스의 메타 데이터 등이 저장되는 구조체로 되어 있다.)메서드는 런타임에 메서드 호출을 처리하는 .. 2024. 5. 22.
18. Objective-C Inheritance 상속, encapsulation(캡슐화) [상속, 캡슐화, 깊은복사] 객체지향 프로그래밍에서 상속은 굉장히 중요하다. 코드의 재사용성 및 확장성 증대 & 개발 속도에서 효율을 끌어올릴 수 있으며 다형성 구현에도 필요하기 때문이다. 새로운 클래스가 필요할 때, 모든 데이터 및 멤버 메서드를 다시 정의하는 대신, 기존에 만들어둔 다른 클래스의 멤버를 상속받게 할 수 있다.이 경우 기존 클래스는 부모 클래스(Super Class), 부모 클래스를 상속받아 만들어진 클래스는 자식 클래스(Sub Class) 라고 말한다. OBC에서는 단일 상속만 지원한다. 즉 단 하나의 부모 클래스만 가진다는 것이다.(Java,Swift와 마찬가지)이는 다이아몬드 문제(어느 클래스에서 상속받은 건지 모호한 문제)를 피하고 복잡한 상속 구조 대신코드의 단순성과 명료성을 .. 2024. 5. 21.
17. Objective-C 클래스와 객체 (메모리), 접근제어 [@property, 스레드 안전, 접근제어] Objective-C는 이름만 봐도 알 수 있듯이 C언어에서 객체지향의 개념을 더한 슈퍼셋 언어이다.객체지향 프로그래밍에서 클래스는 핵심 기능인데 클래스는 객체를 찍어내기 위한 틀 혹은,데이터와 데이터를 조작하는 메서드를 하나로 묶은 것으로 설명할 수 있다. 클래스와 객체클래스는 객체를 찍어내기 위한 템플릿, 설계도이다.객체는 일반적으로 클래스의 인스턴스를 말한다.(클래스를 바탕으로 실제로 메모리에 만들어진 것)인스턴스는 특정 클래스에서 생성된 객체를 의미한다.(어떤 클래스에서 만들어진 것인지가 중요할 때 사용) 객체와 인스턴스를 엄밀히 구분하는 것은 어렵고, 객체는 클래스에서 생성된 모든 것,인스턴스는 특정 클래스에서 생성된 것을 강조하기 위해 사용하는 용.. 2024. 5. 20.
16. Objective-C 로그/에러 핸들링, 포인터 NSLogObjective-C에서 로그를 찍어보기 위해서는 NSLog를 사용한다.(print 디버깅 신공)NSLog는 Foundation 프레임워크의 일부로 전역함수라 어디서든 호출이 가능하다.형식지정자를 통해 문자열 포메팅이 가능하고, 해당 문자열을 표준 에러 출력으로 보낸다. 다만 불필요한 로그가 너무 많이 찍히면 성능이 떨어질 수 있고, 실기기나 배포버전에서 로그가 찍히는 것은 바람직하지 않기 때문에아래와 같이 디버깅 모드에서만 로그가 출력되도록 할 수 있다. (기본은 디버깅 모드, Release모드로 변경하려면 아래 경로 참고)xCode 상단 탭 product - scheme - Edit scheme - Run- Build-configuration (release 선택)#if DEBUG == 0#.. 2024. 5. 17.
15. Objective-C typedef, type casting typedefObjective-C의 typedef는 Swift의 typealias와 동일한 기능을 수행한다.둘 다 기존 타입에 새로운 이름을 부여하여 가독성을 높이고 코드의 간결성을 유지하는 데 사용된다. //Swift typealias MyUnsignedInt = UInt let value: MyUnsignedInt = 10 Objective-C typedef// 이제 BYTE는 unsigned char 대신 쓰이게 된다.// 구별을 위해 주로 대문자로 작성한다.typedef unsigned char BYTE;BYTE b1; 구조체의 typedef 사용typedef struct Musics { NSString *title; NSString *artist; int playTimeSec;}.. 2024. 5. 17.
14. Objective-C Preprocessor 전처리기 Objective-C의 Preprocessor(전처리기)는 텍스트 대치 도구이고,컴파일러가 실제 컴파일 이전에 요구되는 전처리를 할 수 있도록 한다.(텍스트 삽입, 대치 등) 모든 전처리 명령은 #으로 시작한다. 공백이 아닌 글자로 시작하고 주로 한 줄에 다 작성한다. 매크로란? 코드에서 자주 사용되는 일정한 패턴이나 값을 하나의 이름으로 정의해 반복적인 코딩 작업을 줄여주는 기능#define매크로 상수 정의 MAX_LENGTH를 20으로 대치할 것을 명령한다#define MAX_LENGTH 20 #import전처리기에게 Foundation 프레임워크로부터 foundation.h를 가져오라고 명령한 후 현재 소스 파일에 텍스트를 추가하게 한다.#import  #include로컬 디렉토리에서 헤더파일을 불.. 2024. 5. 16.