본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Development/iPhone

[옛 글] [Xcode 4.2] 첫 프로젝트 생성과 탭바 그리고 ARC...

by 마즈다 2013. 7. 19.
반응형

최초 작성일 : 2012/01/20 10:21


오랜만에 심기일전해서 새로운 프로젝트를 생성하였다.

그런데 생성해놓고보니 Xcode 4.2에서는 처음으로 프로젝트를 생성하는 것이었네...

2가지에서 당황하였다.

먼저 스토리보드...
xib 파일은 안보이고 스토리보드만 보여서 조금 당황하고
스토리 보드 들어가서 탭바에 아이템 추가하는 방법을 몰라 더 당황하고...-.-

일단 새 탭바 아이템을 터치했을 때 보여질 뷰 컨트롤러는 기본으로 생성되는
뷰 컨트롤러 하나를 복사하였다. 복사해 놓으니 하단의 탭바 아이템이 안생긴다.
좌측의 컨트롤 리스트에서 드래그앤 드롭으로 가져다 놓으면 된다.




일단 새 탭바 아이템과 이 것을 눌렀을 때 보여질 뷰 컨트롤러를 만들긴 했는데
이 놈을 가장 좌측의 메인 창(탭바 컨트롤러라고 되어있는 놈)과 연결하는 방법을
못찾고 헤맸다. 미아를 하나 만든 셈이다...-.-

결국 경력 13년의 통밥으로 해결 아래 그림과 같이 드래그&드롭하면 연결되면서
관계가 만들어진다.

가장 좌측 탭 뷰 컨트롤러를 선택하면 우측의 커넥션 인스펙터에 다음과 같은
내용이 보인다.




빨간 색 상자 안에서 가장 우측 원을 클릭하고 드래그해서 새로 추가한 탭바 아이템과
뷰 컨트롤러쪽으로 연결시켜주면 관계(Relationship)이 추가된다.




일단 이렇게 해서 첫 번 째 당황스러운 문제 해결...^^

얼추 이렇게 만들어놓고 이제 IBOutlet으로 선언하고, @property @synthesize 
설정하고, dealloc 처리를 하려고 하는데...웬걸...release 함수 호출하는데서 죄다 에러표시가
떠버린다... ARC가 어쩌구 하는데...ARC가 뭐냐?




찾아보니 Automatic Reference Counting이란다. 그럼 이놈이 뭐하는거냐?
일단 애플의 API문서에는 다음과 같이 정리되어있다.

Automatic Reference Counting (ARC) is a compiler-level feature that simplifies the process of managing the lifetimes of Objective-C objects. Instead of you having to remember when to retain or release an object, ARC evaluates the lifetime requirements of your objects and automatically inserts the appropriate method calls at compile time.


즉 Objective-c에서 객체들의 라이프타임을 관리하는 컴파일러 수준에서 제공하는 기능으로
개발자가 일일이 객체의 retain / release  관리하게 하는 대신에 ARC 기능이 객체에 요구되는
라이프타임을 평가하여 컴파일시에 적절하게 메서드를 호출해 준다...는 야그다.

한마디로 retain 카운트 처리를 컴파일러에서 해주겠으니 개발자는 딴거나 신경써라 하는거다.

어쨌든 개념은 탑재했는데...문제는 이전 버전에서 생성된 외부 라이브러리를 사용할 경우나
이전 소스코드가 무지 많아 엄청나게 많은 dealloc 함수를 없애야 한다면...어쩌나...?

그래서 또 검색을 해봤더니 다 방법이 있었다.
일단 무심결에 지나갔지만 프로젝트 생성시에 ARC 사용을 해제하는 옵션이 있다 하니
기존 코딩 방식을 고수하고자 하면 이 옵션을 해제 하면 될 것이고. 나처럼 아무생각없이
지나쳐서 그런 옵션이 있었는지도 모르고 있는 사람이라면 다음과 같이 처리하면 된다.

1. 프로젝트를 선택하고 Build Phases탭으로 가자
2. Compile Sources 항목을 선택하자.
3. ARC를 사용하지 않을 소스 목록을 모두 선택하자
4. 키보드 Enter를 친다 (그러면 작은 입력 창이 나타난다)
5. -fno-objc-arc를 입력하고 Done 버튼을 눌러 종료한다.
6 끝...









이러면 빌드할 때는 정상적으로 되지만 버그인지 원래 그런지 에러 표시(빨간 원)는 없어지지
않는다.

암튼 4.2에서 첫 프로젝트 생성 후 당황했던 2가지 문제를 이렇게 처리하였다...^^

반응형