본문 바로가기

C/Objective C

Objective C category(카테고리) 예제 따라하기 카테고리 클래스 정의를 다루던 도중 새 메서드를 추가하고 싶을 때가 있을 것이다. 이를테면 Fraction 클래스에서 두 부수를 더하는 add: 메서드 외에도 뺄셈, 곱셈, 나눗셈을 하는 메서드가 필요할 수도 있다. 카테고리는 클래스 정의를 그룹짓거나, 연관된 메서드를 카테고리로 쉽게 모듈러할 수 있게 해준다. 또한 원본 소스코드에 접근하거나 서브클래스를 생성하지 않고도 현존하는 클래스의 정의를 쉽게 확장하 는 방법도 제공한다. 카테고리는 강력하면서도 매우 쉬운 기법이다. - 소스코드 #import #import @interface Fraction : NSObject { int numerator; int denominator; } @property int numerator, denominator; -(v.. 더보기
Objective C enum 예제 따라하기 열거 데이터 형 Objective-C에서는 변수에 할당 가능한 값의 범위를 지정할 수 있다. 열거 데이터형은 키워드 enum을 붙여서 정의한다. 이 키워드 뒤에 바로 열거 데이터 형의 이름이 붙고 그 다음에는 (중괄호 안에) 대입 가 능한 값들을 정의하는 식별자 목록이 나온다. 예를 들어, 다음 명령문으로는 flag라는 데이터 형을 정의한다. enu flag { false, true}; 이론적으로 이 flag형은 true와 false 값만 할당할 수 있다. 안타깝게도 컴파일러는 이 규칙을 위반해도 경고 메시지를 주지 않는다. enum flag 형 변수를 선언하려면 키워드 enum과 열거형 이름 flag를 쓴 다음 그 뒤에 변수 목록을 적어 준다. 다음 명령문으 endOfData, matchFound를 .. 더보기
Objective C 정적변수 예제 따라하기 정적 변수 앞서 메서드 외부에서 정의된 변수는 전역 변수만이 아니라 외부 변수도 된다고 이미 말했다. 그러나 전역 변수이면서도 외부 변수는 되지 않기를 원하는 경우가 많다. 다시 말하면, 특정 모듈(파일)에서는 지역변수 이면서 전역으로 변수를 정의하고 싶을 때가 있다는 이야기다. 만일, 특정 클래스 정의에 포함된 메서드를 제외하고는 특정 변수에 접근할 필요가 없다면, 이런 식으로 변수를 정의해야 합당하다. 파일 내에서 특정 클래스를 구현하는 부분이 있다면 파일 안에서 변수를 정적으로 정의하여 이를 달성할 수 있다. 만일 메서드(혹은 함수) 바깥에서 다음 명령문을 사용하면, 이 정의가 나오는 파일 안에, 명령문 다음에 등 장하는 모든 지점에서는 gGlobalVar의 값을 접근할 수 있다. 그러나 다른 파일.. 더보기
Objective C 전역 변수 외부 변수 만일 다음 명령문을 프로그램 초반에(메서드와 클래스 정의 그리고 함수 바깥에서)작성했다면 이 값은 그 모듈 어디서든 참조할 수 있다. int gMoveNumber = 0; 이 경우에 gMoveNumber가 ‘전역(global)’ 변수로 정의되었다고 말한다. 명명규칙(convention)을 따르면 보통 전역 변수의 첫 글자로 g가 쓰인다. 이를 통해 프로그램 코드를 읽는 사람은 변수의 범위를 알게 된 다. 사실, 변수 gMoveNumber를 이렇게 정의하면 다른 파일에서도 이 값에 접근할 수 있다. 특히 앞의 명령 문은 변수 gMoveNumber를 global 변수만이 아닌 ‘외부’ global 변수로 정의한다. ‘외부’ 변수는 그 값을 다른 메서드나 함수에서 접근하고 도 바꿀 수도 있는 변수다.. 더보기
Objective C Instance 변수의 범위를 조절하는 지시어 인스턴스 변수의 범위를 조절하는 지시어 이제 인스턴스 변수의 범위가 클래스에 정의된 인스턴스 메서드에 의해 제한된다는 것을 안다. 따라서 어 느 인스턴스 메서드든 특별한 방법을 사용하지 않고 인스턴스 변수에 이름으로 직접 접근할 수 있다. 또한, 서브클래스를 통해 상속받은 인스턴스 변수가 있음도 알 것이다. 서브클래스에 정의된 메서드는 상 속받은 인스턴스 변수에 이름으로 직접 접근할 수 있다. 다시 한 번 말하지만, 특별히 다른 무언가를 해주 지 않아도 된다. 인터페이스 부분에서 인스턴스 변수를 선언할 때 선언 앞에 네 가지 지시어를 붙임으로써 범위를 더 상세 히 설정할 수 있다. □ @protected – 어떤 클래스에서 인스턴스 변수가 정의되었을 때, 그 클래스와 그 서브클래스에 정의된 메서드는 이 .. 더보기
Objective C Class 초기화 예제 따라하기 클래스 초기화 하기 Fraction *myFract = [[Fraction alloc] init]; 두 메서드가 호출된 뒤, 보통 다음과 같이 새 객체에 값을 대입한다. 객체를 초기화하고 나서 초기값을 설정하는데, 보통 한 메서드에서 이 두 작업을 동시에 수행한다. 예를 들어, initWith:: 메서드를 정의하여 분수를 초기화하고 두 인수를 제공해 분자, 분모의 값을 설정할 수 있 다. 클래스에서 초기화 메서드의 이름은 보통 init... 으로 시작한다. 만일 클래스가 초기화 메서드를 하나 이상 갖는다면, 그 가운데 하나는 ‘지정된 초기화 메서드’여야 하고, 다른 메서드는 모두 이 초기화 메서드를 사용해야 한다. 지정된 초기화 메서드는 대개 가장 복잡한 초기화 메서드, 즉 가장 많은 인수를 받는 메서드.. 더보기
아이폰 Gesture Recognizer 예제 따라하기 - 아이폰에서 화면 전환을 할때 제스쳐로 전환해보는 예제이다. 더보기
아이폰 Custom Storyboard Segue 예제 따라하기 - 아이폰 화면을 Custom으로 전환 시켜 다양한 Animation 효과를 줘보자. 더보기
아이폰 Tab Bar Controller 만들기 예제 따라하기 - 아이폰의 Tab Bar 을 이용하여 여러개의 뷰를 한 화면에서 전환하면서 확인 할 수 있는 기능이다. - 화면 디자인 - Tab Bar Controller 만들기 순서 1. Xcode 실행 2. Tabbed Application 3. Project Name : “TabbedTest” 4. AppDelegate.h 파일 편집 5. AppDelegate.m 파일 편집 @interface AppDelegate : UIResponder { NSInteger myCount; } @property (nonatomic, assign) NSInteger myCount; @property (strong, nonatomic) UIWindow *window; @end #import "AppDelegate.h" @impl.. 더보기
아이폰 TableView 만들기 예제 따라하기 - 아이폰의 Table View를 이용하면 많은 데이터를 한번에 보여줄 수 있게 된다.- 안드로이드의 ListView와 동일한 기능이라고 생각하면 된다. - 화면 디자인- Table View 만들기 순서 1. Xcode 실행 2. Single View Application 3. Project Name : “TableViewTest2” 4. storyboard에 View Controller 삭제 – Navigation controller 위치 5. Navigation controller 오른쪽에 View Controller 위치 6. View Controller에 Label 위치 - “선택한 내용이 보이는 곳” 7. Root View Controller에 있는 Table View Cell 선택 – Comm.. 더보기