취보특개

ObjectiveC-1 본문

Gaebal/iOS

ObjectiveC-1

ha3kkkkk 2020. 1. 5. 14:15

다운받기

   - App Store 또는 Developer홈페이지에서 다운로드 가능하다.

[그림 1] developer.apple.com

프로젝트 만들기

    - 자료형, 클래스 등 공부를 할 것이기 때문에 Command Line Tool로 프로젝트를 만든다.

    ※ 다른 작업을 하며 캡쳐해서 시간 뒤죽박죽과 그림 매칭이 안되는 것도 있으니 전체적인 틀로만 파악 바람

[그림 2] Xcode Create project
[그림 3] Xcode Command Line Tool
[그림 4] Xcode Insert Project info

구조

[그림 5] Xcode Code Structure

① 재생버튼 
    - 컴파일 버튼(단축키: 커맨드R)
② @autoreleasepool
    - 스택처럼 생겼다 사라지는 메모리 영역
    - 여기다가 코드를 입력한다.
② int x = 1
    - 정수형 변수 선언
② NSLog(@"value of x : %i", x)
    - print() 같은 존재라고 생각하면 됨
    - 문자열을  쓸때는 항상 @를 앞에 붙여야만 함
③ Foundation Framework
    - 프레임워크에 라이브러리가 포함되어있음
    - Foundation Framework는 무조건 써야하는 라이브러리로 C의 처럼 생각
    - Foundation Framework에는 NSString. NSArray, NSDictionary 등이 있음

 

 

조건문

[그림 6] Objective-C if-else, switch

반복문

[그림 7] Objective-C while, for

 

클래스

[그림8] craete_class-file

클래스를 위해서는 선언부(@interface)와 구현부(@implementaion)가 필요하다.

[그림8]처럼 클래스 파일을 만들면, 선언부와 구현부를 구분해서 파일이 자동으로 만들어진다.

[그림9] ovjectiveC-class-intercace

.h 파일에 선언부를 입력

[그림10] ovjectiveC-class-implementation

.m 파일에 구현부 입력

※ 구현부도 @implementation House : NSObject로 작성해야하지만, NSObject가 최상위라서 생략할 수 있다.

[그림11] ObjectiveC-class-main.m

main.m에서 클래스 호출 및 메소드 사용.

 

GETTER, SETTER의 경우 이클립스처럼 자동 생성되지는 않지만.

아래와 같이 @property를 사용하여 생략할 수 있다.

[그림12] ObjectiveC-property tag
[그림13] ObjectiveC-property tag

 

[그림14] ObjectiveC-property tag

[그림12]에서 @property (setter= ...)처럼 setter의 이름을 바꿀 수 도있지만 잘 사용하지는 않는다.

    (setter=setRooms:)에서 콜론(:)은 인자를 받겠다는 의미이다.

    만약, getter의 이름을 바꾸겠다면

    @property(getter=getRooms)처럼 콜론이 필요하지 않다.

 

[그림14]의 h.floor처럼 Receiver Message가 익숙하지 않은 개발자들은 도태 연산자를 사용할 수 있다.

 

※ 클래스 변수에는 *을 붙인다.

 

문자열

NSString 문서를 보면,

NSString 클래스와 서브클래스 NSMutableString이 있다.

NSMutableString은 단어 그대로 수정할 수 있는 문자열 이다.

 

NSString 사용 방법부터 보자.

[그림 15] NSString

※ 문자열을 쓸때는 항상 @를 붙인다.

 

[그림15]①번 ②번처럼 초기화하여 사용하는게 객체 할당의 정석이다. 하지만,

NSString은 워낙 사용 빈도가 높아서 동적할당을 하지않고 ③번처럼 써도된다. (NSString만 가능하다)

 

②번initWithString 같은 것이 NSString의 메소드이다.

initWithString은 초기화와 동시에 문자열을 할당해주는 것을 뜻한다.

 

그 외의 다른 NSString 메소드를 몇 개 알아보자.

[그림16] NSString-subString

[그림16]에서 사용한 메소드는 substringFromIndex 와 substringToIndex 이다.

 

문자열을 Dividing하여 새로운 문자열로 리턴해주는 메소드인데,

어떤 식으로 설명해야하나 싶어 그림으로 표현했다.

[그림17] string index example

[그림-17] [그림-16]의 결과를 비교하면 이해하기 쉬울것같다.

 

콘솔 결과창의 주황색 네모 박스를 보면 같은 결과값인데 실제 코드는 다르게 표현되었다.

이렇게 여러 표현법이 존재하니,

모르는 라이브러리가 나올때는 알트를 누르고 클릭하여 짤막하게 나오는 설명을 보도록하자.

 

[그림-16]에서 문자열을 수정한 결과값을 result에 넣는것을 보아 알 수 있듯이

NSString은 변경 값을 리턴하여 줄 뿐 자기 자신이 변화하지 않는다.

하지만 NSMutableString을 사용하면 부분 수정이 가능하다.

[그림18] NSMutableString

[그림-18]에서 사용된 NSMutableString 메소드는 appendString, insertString이다.

자기자신이 변화하기 때문에 NSString처럼 리턴값을 받아줄 필요가 없다.

 

이외에도 굉장히 많은 메소드들이있고,

NSString 외에도 많은 클래스들이 있다.

모르는 것들이 나오면 [그림-19]처럼 Developer Document를 참고하여 보는 습관을 가지자.

[그림19] Developer Document

 

배열

NSString과 마찬가지로 배열에도 

NSArrayNSMutableArray가 있다.

 

[그림20] NSArray

NSArray는 초기화할때 파라미터가 끝났다는 의미로 nil을 추가해야한다.

출력은 같지만 Objective C 스타일로 배열의 접근하려면 objectAtIndex 메소드를 이용한다.

실제로 배열을 쓸때는 for보다 for in을 자주 쓴다.

 

[그림21] NSMutableArray

NSMutableArray는 nil을 안 넣어줘도 된다.

NSMutableArray가 더 좋아보이지만, NSArray와의 속도차이가 크다.

 

 

딕셔너리

 

 

[그림22] NSDictionary

[그림22]는 NSDictionary의 클래스 초기화 방법 및 메소드이고,

[그림23]은 NSMutableDictionary의 클래스 초기화 및 메소드이다.

파이썬의 딕셔너리와 기능은 같으나, Objective-C에서는 value, key 형태로 입력된다.

 

 

'Gaebal > iOS' 카테고리의 다른 글

iOS에서 hosts 변경  (0) 2021.04.22
ObjectiveC-2  (0) 2020.01.19
시작  (0) 2019.12.22
Comments