hcn1519 / TILMemo

블로그 초안 저장소
10 stars 1 forks source link

TILMemo

블로그로 쓰기에는 짧은 내용을 정리하는 저장소

Atomic/non Atomic

an operation appears to occur at a single instant between its invocation and its response



Pointer

변수는 상자와 같고, 상자에 담길 내용물의 종류에 따라 상자의 모양을 제각각으로 만든다고 생각하면 이해하기 쉽다. 상자에 담길 내용물은 변수에 저장될 값이고, 상자의 모양은 변수의 타입이다. 이런저런 모양의 상자들은 모눈종이 위에 좌표를 매겨 가지런히 배열해 놓으면 이 가로 세로 좌표로 금방 찾을 수 있다. 포인터란 어떤 상자의 내용물이 다른 어떤 상자가 놓이 곳의 좌표라는 말이다. 즉, 어떤 상자를 열었더니 그 안에 다른 상자의 좌표가 있더라는 의미다.

포인터는 참조(reference)라고도 부른다. 포인터를 통해서 어떤 주소의 데이터를 읽으면 이를 포인터의 역참조(dereference)라고 한다.

int main(int argc, const char * argv[]) {
    int i = 17;
    int *addr = &i;
    printf("i: %d\n", i);
    printf("addr: %d\n", *addr); // 역참조
    *addr = 123;
    printf("Now i: %d\n", i);
    return 0;
}

ObjectiveC를 통한 객체 개념 이해

즉, 어떤 객체의 메소드를 호출하는 것은

1. 해당 메소드로 호출되는 함수를 실행한다.
2. 해당 클래스에 메시지를 보낸다.

의 의미 모두 해당된다.

클래스

Message

Message는 메시지를 받는 객체의 포인터(receiver)와 트리거될 메소드의 이름(selector)로 구성되어 있다.

메시지 보내기

NSDate *now = [NSDate date];
[now dateByAddingTimeInterval:100];

메소드는 메시지를 받는 receiver에 따라 크게 2가지로 나뉜다.

객체 상속의 구동 방식

객체 소유권(Object Ownership)

Pod install vs Pod update

  1. pod install - 처음 프로젝트에 pods을 설치할 때 사용한다. 또한 새로운 pods을 추가하거나, 제거할 때도 사용한다. 한 번 설치된 pods은 Podfile.lock에서 설치된 버전이 명시되어 있기 때문에 새로운 버전이 release되어 있어도 새로 pod을 설치하지 않는다.
  2. pod update - 새로운 버전으로 pods을 올릴 때만 사용한다.
  3. pod outdated - 새로운 버전이 release된 pods 리스트를 알려준다.