Objective-C24 13. Objective-C Structure 구조체 Objective-C에서 배열에는 '같은 타입'의 요소들을 담을 수 있다. Stucture은 '다양한 타입의 요소'를 담을 수 있는 유저 커스텀 타입이다. 구조체는 주로 특정한 관련 데이터를 묶어서 관리하기 위해 사용된다. 구조체는 클래스와 달리 힙이 아닌, 스택 영역에 할당되고 해제된다. 구조체는 일반적으로 정적으로 크기가 정해져 있기 때문이다. 즉 Object타입이 아니라는 뜻이다. 메세지를 보낼 수 없고, 상속을 지원하지 않으며 다형성을 가지지 않는다. 구조체의 인스턴스는 함수의 콜스택 프레임 내에서 생성되며, 함수가 종료되면 스택 프레임이 제거되면서 구조체 인스턴스도 함께 제거된다. (자동 해제) 따라서 구조체는 명시적으로 메모리 해제를 해줄 필요가 없다.아래 예시 코드를 통해 구조체를 활용하.. 2024. 5. 16. 12. Objective-C Strings 문자열 Objective-C에서 문자열은 NSString 클래스를 사용한다.NSString은 immutable 문자열을 나타낸다. 따라서 객체를 생성한 후에는 내용을 변경할 수 없다.따라서 아예 새로운 객체를 반환하는 메서드가 많다. 이에 자식 클래스인 NSMutableString을 사용하면 필요에 따라 더 유연하게 문자열을 변경할 수 있다. 문자열 관련 메서드는 굉장히 다양하기 때문에 코드와 함께 정리해 보았다.대부분 메서드명을 보면 어떤 기능인지 알 수 있다.#import int main(void) { @autoreleasepool { //기본 생성 및 출력 NSString *greeting = @"hello apple"; NSLog(@"Greetings!: %@\.. 2024. 5. 13. 11. Objective-C Pointers 포인터 동적 메모리 할당과 같은 기능을 포함해 C계열 언어에서 포인터 개념은 필수적이다. 변수는 사실상 메모리 주소이며, &(ampersand)연산자로 접근할 수 있다.#import int main (void) { int var1; char var2[10]; NSLog(@"Address of var1 variable: %p\n", &var1 ); //0x16fdff238 NSLog(@"Address of var2 variable: %p\n", &var2 ); //0x16fdff23e NSLog(@"Size of var1: %d, size of var2: %d,",sizeof(var1),sizeof(var2)); // 4, 10 return 0;} 출력되는 메모리 주소는 계속 변할 수 있고.. 2024. 5. 9. 10. Objective-C Arrays 배열 Objective-C에서 배열은 '같은 타입'의 요소들이 '연속적으로 저장'된 '고정된 사이즈'의 자료구조이다.배열의 원소는 연속적인 메모리 공간에 저장되어 있어 index로 접근 가능하며(0이 맨 첫번째) 가장 낮은 주소가 첫 번째 요소, 가장 높은 주소가 마지막 요소를 가리킨다.배열 선언요소의 타입과 배열의 사이즈를 명시적으로 작성해준다.(배열의 사이즈는 0초과의 정수 리터럴이며, 타입은 크게 구애받지 않는다.)type arrayName [arraySize];//declaredouble balance[10];//초기화 해주지 않아서 0이나 쓰레기 값이 들어있다.배열 초기화double balance[5] = {1000.0, 2.0, 3.0, 50.0, 100.0};//사이즈를 생략하면 배열의 요소 개.. 2024. 5. 7. 9. Objective-C NSNumbers NSNumber는 기본 데이터 타입(int, float, double)을 객체로 감싸는 래퍼 클래스이다.Objective-C에서 컬렉션 클래스는 기본 타입이 아닌, 객체 타입만 저장할 수 있기 때문에 래핑하는데 주로 사용된다.또한 비교나 연산작업을 할 때 더 편리한 기능들이 제공된다. NSNumber 객체를 생성하고, value를 뽑아내는 예시 코드는 아래와 같다. #import int main(int argc, const char * argv[]) { @autoreleasepool { // NSNumber 객체 생성 NSNumber *boolNumber = [NSNumber numberWithBool:YES]; NSNumber *charNumber = [NSN.. 2024. 5. 7. 8. Objective-C Blocks 블록 블록이란?Objective-C의 클래스는 여러 데이터와 관련된 여러 메서드로 이루어져 있다. (프로퍼티와 메서드)하지만 작업을 하다 보면 여러 메서드의 조합 보다는 하나의 작업만 수행해도 되는 경우가 있다. 즉 클래스까지 따로 만들 필요는 없는 경우를 말한다. Block은 값인 것처럼 함수에 전달될 수 있는, 코드 덩어리를 하나의 단위로 캡슐화 하는데 사용되는 객체이다.익명함수,람다와 비슷하고 Swift에서 클로저라고 생각하면 되겠다.(클로저는 Swift에서 1급 객체이다.) 블록 또한 1급 객체로,변수나 상수에 할당이 가능하고, 다른 함수의 파라미터로 전달 가능하고,함수의 반환 값으로 사용 가능하며 배열과 같은 자료구조에 저장할 수 있다.블록 활용처- GCD를 통한 비동기 작업- 콜백함수의 인자- 컬렉.. 2024. 5. 7. 이전 1 2 3 4 다음