It’s me. Right.
Hello.ENTP.World
It’s me. Right.
전체 방문자
오늘
어제
  • 분류 전체보기 (45)
    • 멋쟁이사자처럼 앱스쿨 1기 (18)
    • 2024 Apple Developer Academ.. (10)
    • 개발 with Apple (8)
    • Flutter (1)
    • 알고리즘 (4)
    • 디자인 (0)
    • 앱스토어 출시 (1)
    • 영어공부 (3)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 애플아카데미
  • git xcode cloud
  • xcode cicd
  • 백준
  • xcode 팀 계정
  • xcoud cloud cicd
  • xcode cloud workflow
  • git cicd
  • 회고
  • Xcode
  • 코딩테스트
  • 코테
  • 아키텍처
  • 협업
  • xcodcloud
  • 개발
  • Xcode cloud
  • swift cicd
  • 동기
  • git xcodecloud
  • xcode 배포 자동화
  • 개발자
  • xcode cloud 계정 권한
  • 애플디벨로퍼아카데미
  • ios
  • 좋은 회고
  • 알고리즘
  • xcode cloud appstoreconnect
  • Apple Developer Academy
  • swiftUI

최근 댓글

최근 글

티스토리

반응형
hELLO · Designed By 정상우.
It’s me. Right.

Hello.ENTP.World

멋쟁이사자처럼 앱스쿨 1기

[멋쟁이사자처럼] 앱스쿨 1기 - Objective-C (16일차 22.10.07)

2022. 10. 7. 17:51
반응형

1. 오전일정 : Objective-C

함수

  • Objective-C Foundation Framework는 프로그램에서 호출할 수 있는 수많은 기본 메서드를 제공합니다.
  • 메소드는 함수, 서브루틴, 프로시저 등과 같이 다양한 이름으로 알려져 있다.

메서드

  • Objective-C 메서드의 정의는 메서드 헤더와 메서드 본문으로 구성됩니다.
//swift 함수 호출
func myMethod(name: String, age: Int) -> Void
myInstance.myMethod(name: "ned", age: 13)

//objective-c 함수 호출
- (void)myMethodWithName:(NSString *)name age:(int)age
[myInstance myMethodWithName:@"ned", age:13]
  • 밖에서 사용하는 변수명과 안에서 사용하는 변수명을 다르게 사용하는 예시
//Swift 코드
func myMethod(myName name: String, myAge age: Int) {      //밖에서 myName, myAge | 안에서 name, age
    print("(name) (age)")
}
myInstance.myMethod(myName: "ned", myAge: 13)

//Objective-C
- (void)myMethodWithMyName:(NSString *)name myAge:(int)age {   //밖에서 myName, myAge | 안에서 name, age
    // name 활용
    // age 활용
}
[myInstance myMethodWithMyName:@"ned", myAge:13]

 

블록(클로저의 조상님)

  • C, Objective-C, C++에 추가된 언어 수준 기능으로, 이를 통해 마치 값인 것처럼 메서드나 함수에 전달할 수 있는 고유한 코드 세그먼트를 만들 수 있다.
  • 블록은 NSArray 또는 NSDictionary와 같은 컬렉션에 추가할 수 있음을 의미하는 Objective-C 개체이다.
  • 값을 캡처하여 다른 프로그래밍 언어의 클로저 또는 람다와 유사하게 만드는 기능이 있다.

<단순 블록 선언 구문>

returntype (^blockName)(argumentType);       //Objective-C는 return타입을 앞에 쓰는게 국룰

returntype (^blockName)(argumentType)=^{
};

2. 오후일정 : Objective-C

배열

  • Objective-C에서 배열을 하나씩 초기화하거나 다음과 같이 단일 명령문을 사용하여 초기화할 수 있다.
  • 중괄호 {} 사이에 들어가는 값들의 수는 대괄호 [] 사이의 배열에 대한 선언 요소 수보다 클 수 없다.
  • 배열의 크기를 생략하면 초기화를 담을 수 있을 만큼 큰 배열이 생선된다.
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        int myArray[10];
        int i, j;
        
        for (i=0; i<10; i++) {
            myArray[i] = i + 100;
        }
        
        for (j=0; j<10; j++) {
            NSLog(@"Element[%d] = %d\n", j, myArray[j]);
        }
    }
    return 0;
}

 

배열 세부사항

  • 다차원 배열, 함수의 배열 전달, 함수에서의 배열 반환, 배열에 대한 포인터 -> 강사님 강의자료 참고

 

포인터 = 시작번지 + 타입에 대한 정보

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

    int age = 13;
    double height = 145.32;
    
    // 변수에 담긴 값을 출력
    NSLog(@"value of age : %d", age);
    NSLog(@"value of hegith : %f", height);
    
    // 변수가 위치한 메모리 안에서의 주소
    NSLog(@"address of age : %x", &age);
    NSLog(@"address of height : %x", &height);
    
    // 포인터 정보 = 해당 데이터의 메모리 주소 + 메모리를 차지하는 크기
    // 토지대장 = 주소지(경상북도 울릉군...) + 몇 평수 정보(임야 13평)
    
    return 0;
}
#import <Foundation/Foundation.h>

@interface SampleClass : NSObject
- (void)sayHello;
@end

@implementation SampleClass
- (void)sayHello {
    NSLog(@"Hello World");
}
@end

int main(int argc, const char * argv[]) {
    // 포인터 정보 = 해당 데이터의 메모리 주소 + 메모리를 차지하는 크기
    // 토지대장 = 주소지(경상북도 울릉군...) + 몇 평수 정보(임야 13평)

    int age = 17;
    
    // 변수 age의 주소를 확인해서, int 타입이 담길 거라고 생각하는 포인터 변수 만들기
    int *infoOfAge = &age;
    
    NSLog(@"age는 %p 주소에 위치했습니다.", infoOfAge);
    // age는 0x16fdff3ac 주소에 위치했습니다.
    
    NSLog(@"age의 메모리 크기는 %zu 바이트입니다.", sizeof(int));
    // age의 메모리 크기는 4 바이트입니다.
    NSLog(@"처음 %p 주소에 가보니 %d 값이 들어있습니다.", infoOfAge, *infoOfAge);
    // 처음 0x16fdff3ac 주소에 가보니 17 값이 들어있습니다.
    
    *infoOfAge = 32;
    NSLog(@"다시 %p 주소에 가보니 %d 값이 들어있습니다.", infoOfAge, *infoOfAge);
    // 다시 0x16fdff3ac 주소에 가보니 32 값이 들어있습니다.
    
    NSLog(@"%p를 가르키는 정보의 메모리 크기는 %zu 바이트입니다.", infoOfAge, sizeof(int *));
    // 0x16fdff3ac를 가르키는 정보의 메모리 크기는 8 바이트입니다.
    
    
    // SampleClass의 인스턴스를 만들어서
    // 그 메모리의 위치 정보를 SampleClass클래스에 맞춘 포인터 변수 sampleClass에 할당한다
    // 클래스에 의해 만들어지는 인스턴스는 무조건 포인터 단위로 관리해야만 활용 가능하다.
    SampleClass *sampleClass = [[SampleClass alloc] init];
    
    // sampleClass 포인터 정보가 가르키는 인스턴스 데이터를 찾아가서
    // 데이터에 명시된 sayHello 메소드를 실행하라
    [sampleClass sayHello];
    
    
    return 0;
}

 

문자열

  • Objective-C의 문자열은 NSString을 사용하여 표현되며 하위 클래스 NSMutableString은 문자열 개체를 생성하는 여러 방법을 제공한다.
  • 문자열 개체를 만드는 가장 간단한 방법은 '@"..."' 구문을 사용하는 것이다.
#import <Foundation>

int main() {
	NSString *greeting = @"Hello";          //@는 NS객체를 출력할 때 사용하는 것, String에만 국한되는 것이 아님
    	NSLog(@"%@\n", greeting);
}

3. 오늘의 리뷰

공부하고 싶은게 많다! 알고 싶은게 매우 많다! 정리하고 싶은게 진자 많다! 하지만... 체력이 안돼... 집중력이 떨어지는데 뭔가 좋은게 없을까... 고민이 된다.

반응형

'멋쟁이사자처럼 앱스쿨 1기' 카테고리의 다른 글

[멋쟁이사자처럼] 앱스쿨 1기 - SwiftUI (22일차 22.10.18)  (2) 2022.10.18
[멋쟁이사자처럼] 앱스쿨 1기 - Objective-C (17일차 22.10.11)  (4) 2022.10.11
[멋쟁이사자처럼] 앱스쿨 1기 - Objective-C (15일차 22.10.06)  (2) 2022.10.06
[멋쟁이사자처럼] 앱스쿨 1기 - 클로저&이스케이프 클로저 (14일차 22.10.05)  (4) 2022.10.06
[멋쟁이사자처럼] 앱스쿨 1기 - Swift 에러 핸들링&열거형(Enum)&제너릭(Generics) (13일차 22.10.04)  (2) 2022.10.04
    '멋쟁이사자처럼 앱스쿨 1기' 카테고리의 다른 글
    • [멋쟁이사자처럼] 앱스쿨 1기 - SwiftUI (22일차 22.10.18)
    • [멋쟁이사자처럼] 앱스쿨 1기 - Objective-C (17일차 22.10.11)
    • [멋쟁이사자처럼] 앱스쿨 1기 - Objective-C (15일차 22.10.06)
    • [멋쟁이사자처럼] 앱스쿨 1기 - 클로저&이스케이프 클로저 (14일차 22.10.05)
    It’s me. Right.
    It’s me. Right.
    개발자가 되고싶은 코린이의 천방지축 얼렁뚱땅 개발일기

    티스토리툴바