Objective-C에서 웹서버로 POST 요청

코코아 네트워킹 코코아에서 네트워크 연결을 통해 통신을 하는 기능을 추가하는 것은 사실 쉽지 않다. 그것은 여느 C/C++ 프로그램과 마찬가지로 상당히 번거로운 작업들을 수반한다. 하지만 이러한 과정들은 단지 작성해야 할 코드량이 파이썬과 같은 언어에 비해 많다는 것이지, 그 과정까지 번거롭다는 것은 아니다. 보통 HTTP 연결을 사용하는 프로그램은 다음과 같은 과정을 거쳐서 동작한다.

파일로부터 한줄 씩 읽기

파이썬 가장 일반적으로 파일을 한 줄씩 읽어들이는 방법은 다음과 같다. with open(‘filename.txt’, ‘r’) as f: for line in f: pass # line은 읽어들인 각 줄 하지만 이 방법은 파일을 한 번에 메모리로 읽어들인 다음, 한 줄씩 스캔한 결과를 돌려주기 때문에 수 기가짜리 로그 파일을 이런 식으로 처리하면 문제가 생긴다.

[Objective-C] 클래스,인스턴스 메소드를 동적으로 추가하기

동적 메소드 변형 메소드를 동적으로 추가하기 (도대체 언제인지는 감을 잡기 힘들지만) 객체에 동적으로 기능의 구현을 추가해야 할 경우가 이따금씩 있다. 예를 들자면 @dynamic 지시어를 써서 프로퍼티를 선언하는 경우가 이에 해당한다. @dynamic propertyName; 이 구문은 컴파일러에게 프로퍼티와 연관되는 메소드가 동적으로 제공된다는 것을 알려주게 된다. 이러한 동적 메소드 할당을 위해서는 resolveInstanceMethod: 나 resolveClassMethod:를 구현해서 특정 셀렉터를 클래스 메소드 혹은 인스턴스 메소드에 동적으로 추가할 수 있다.

[Objective-C] 메시지로부터 메소드가 호출되는 과정

objc_msgSend 함수와 메시징 매커니즘 objective-c에서는 객체의 메소드를 호출하는 것을 객체에게 메시지를 보낸다라고 표현한다. 이는 메소드 자체를 객체화하는 디자인 패턴과 쉽게 익숙해질 수 있게 하려는 포석이기보다는 실제로 메소드의 호출이 메시지를 보내는 형태로 구현이 되어있기 때문이다. objective-c의 이러한 메시징 매커니즘을 이해하려면 몇 가지 깊숙한 곳의 내용을 찬찬히 들여다 볼 필요가 있다.