안녕하세요 :) 정말정말 오랜만에 글을 쓰는 것 같습니다.
예비 개발자에서 ... 일주일차 iOS 개발자로 돌아왔습니다 👏🏻
요 며칠 정말 정신이 없어서 글을 잘 못적었지만 앞으로는 이전처럼 글을 꾸준히 써보도록 노력해보겠습니다
이번 글의 주제는 Objective - C 입니다.
사실 저도 아직 공부하는 입장이기 때문에 정보성 글보다는 공부하는 과정이라고 봐주시면 좋을 것 같습니다 :)
swift가 발표된 후 등장한 사진 ㅠ_ㅠ
objective - C는 Swift가 등장하기 전까지 애플의 표준 프로그래밍 언어로 사용되었던 언어입니다.
(무려 1980년대에 태어난 아이...)
Swift가 2014년 WWDC에서 발표가 되었고 ... 3.0 버전 ~ 4.0버전 이후로 Swift가 안정기를 찾았다고 들었기 때문에 아마 그 이전까지는 꽤나 많이 쓰였지 않았을까 싶네요 !
2021년 지금은 거의 모든 사람들이 Swift를 사용해서 iOS 관련 프로그램을 짜고있지만
꽤나 많은 앱들이 아직 Objective - C로 구현되어 있는 경우가 있습니다.
하지만 이제는 애플에서 Swift라는 언어를 표준언어로 정하고 그에따라 공식 문서들도 Swift로 업데이트가 되고 있습니다. 그렇기때문에 Objective - C로 코드를 짜야겠다!!!
이런 공부방향보다는 Objective - C로 짜여져있는 코드를 어느정도 읽어낼 수 있는정도면 충분하지 않을까 싶습니다.
(물론 저도 이런느낌으로 공부를 진행 중입니다 :)
가장 눈에 띄는 둘의 차이점이라고 하면
objective - c 는 .h(헤더)파일과 .m(본문)파일이 따로 나누어져있고
swift는 .swift파일만 있다는 점 인 것 같습니다.
// .h파일
- (void)addNewMemo:(NSString*)memo;
- (void)deleteMemo:(Memo*)memo;
// .m파일
- (void)addNewMemo: (NSString*)memo {
Memo* newMemo = [[Memo alloc] initWithContext:self.mainContext];
newMemo.content = memo;
newMemo.insertDate = [NSDate date];
[self saveContext];
}
- (void)deleteMemo:(Memo*)memo {
if (memo != nil) {
[self.mainContext deleteObject:memo];
[self saveContext];
}
}
왜 objectivec는 콜아웃 코드 색상변경이 안될까요 ㅠ_ㅠ? 그래서 swift 로 적용 ...
이렇게 .h에서 선언을 하고 내용을 .m에서 구현하는 방식으로 되어있습니다.
그리고 .m파일에서 .h를 상단에 #import하여 사용하는 형식을 가지고 있습니다.
이걸 interface / implementation 개념이 있다고 말하나봅니다 (선언 / 구현)
Swift 같은 경우에는 타입추론이라고 해서
var str:String = "안녕하세요"
var str = "안녕하세요"
위가 아니라 아래처럼 적어도 오류가 나지 않습니다.
하지만 Obejctive - C에서는 이렇게 타입을 명시해주어야 한답니다.
NSString *str = @"안녕하세요";
위에서 볼 수 있듯이 변수명 앞에는 *을 붙여줘야하고 String대신에 NSString이라는 데이터타입을 사용합니다.
그리고 문자열 앞에 @ 심볼을 붙여줘야하고 Swift처럼 컴파일러가 문장의 끝을 파악하는 방식이 아니기 때문에
; 표시도 꼭 붙여줘야합니다.
swift
var age = 25
print("나는 \(age)살 입니다")
objective-c
NSNumber *age = @50;
NSLog(@"나는 %d살 입니다", age);
이번 글은 Objective C에 대해서 간단한 소개를 해보았습니다.
옵젝 공부를 하면서 느낀 점은 독학으로 공부하기 좋은 언어로 개발공부를 입문했구나 ㅎㅎ ..
혼자 공부하기 참 좋은 세상이다 ^-^ ... Swift에게 감사한 마음이 생겼습니다
확실히 오브젝티브씨 관련된 한글 자료나 강의가 스위프트에 현저히 적은 느낌이 들었습니다 😢
그래서 제가 공부하면서 알게되는 점들을 열심히 적어보려고 합니다!
그럼 다음글로 또 만나요 ~