외규장각 도서 환수 모금 캠페인

'Interesting/objective - C'에 해당되는 글 48건

  1. 2010.08.05 rotation
  2. 2010.08.05 프레임버퍼 관련
  3. 2010.08.05 소스 완전 사이트
  4. 2010.08.04 탈옥폰 Xcode 개발환경 세팅
  5. 2010.07.28 Xcode Tip
  6. 2010.07.28 XML 파싱을 위한 설정
  7. 2010.04.06 Objective - C 기본 문법 총정리
  8. 2010.04.06 objective - c #1

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    // Return YES for supported orientations

    //return (interfaceOrientation == UIInterfaceOrientationPortrait);


//Portrait 세로

//Landscape 가로

//가로보기 고정

//시계방향 90

//return (interfaceOrientation >= UIInterfaceOrientationLandscapeLeft);

//가로방향 모두 지원

//return (interfaceOrientation >= UIInterfaceOrientationLandscapeRight);

//세로보기 고정(정방향 & 180)

//return (interfaceOrientation <= UIInterfaceOrientationPortraitUpsideDown);

//정방향 세로 고정

//return (interfaceOrientation <= UIInterfaceOrientationPortrait);

//모든 로테이션 허용

    return YES;

}

Posted by 닉네임영역
,

# 3.x 버전 프레임버퍼 읽어오는 법

1. 이미지 데이터를 버퍼에 로딩
2. 텍스쳐 생성 glGenTextures
3. 텍스쳐에 이미지 데이터 지정 (이미지 크기, 포맷, 이미지 버퍼의 포인터)
4. 이미지 입힐 폴리곤 좌표 입력 (glVertexPointer)
5. 폴리곤 버텍스에 텍스쳐 좌표 입력 (glTexCoordPointer)
6. 폴리곤을 그림 (glDraw 계열 함수)


# 4.x 버전 프레임버퍼 읽어오는 법

AVCaptureDeviceInput 이용하여 읽어옴(4.0 sdk)

Posted by 닉네임영역
,

<push notification service 관련 provider>

http://code.google.com/p/apns-php/


<web 게시판과 연동>

http://code.google.com/p/cozymood/


http://cocoadev.tistory.com/#recentTrackback에서 공개한 내용임.

      *  이미지 편집 함수 모음( 스케일, 회전, crop )

  • 다양한 UI 구현
  • 테이블뷰셀 커스터마이징
  • HTTP GET/POST 요청
  • XML 파싱
  • 사진 앨범, 카메라, 지도 이미지 접근
  • 맵뷰 위치정보
  • 푸시 노티피케이션


<여러 UI 모음: photo viewer, etc>

http://github.com/facebook/three20 (초기에는 facebook 어플이었으나 현재는 여러 UI 모음으로 바뀜 )


<map>

http://code.google.com/p/route-me/


<E-mail>

http://code.google.com/p/remail-iphone/

http://code.google.com/p/skpsmtpmessage/

 

<그래프>

http://code.google.com/p/core-plot/

 

<달력>

http://ved-dimensions.blogspot.com/2009/04/iphone-development-creating-native_09.html


<sqlite>

http://code.google.com/p/pldatabase/ (BSD license)

http://code.google.com/p/flycode/source/checkout  (class rapper)


<계산기>

http://code.google.com/p/hpcalc-iphone/ (GPL V2 license)


<트위터 클라이언트>

http://github.com/blog/329-natsuliphone-iphone-twitter-client

http://code.google.com/p/tweetero/


<facebook>

http://github.com/facebook/facebook-iphone-sdk


<rss reader>

http://code.google.com/p/iphone-simple-rss-aggregator/


<ebook reader>

http://code.google.com/p/iphoneebooks/


<blog>

http://iphone.wordpress.org/


<백업, 동기화>

http://www.funambol.com/solutions/iphone.php

http://code.google.com/p/gris/ (구글 리더 동기화)


<time tracking>

http://github.com/freshbooks-addons/freshbooks-iphone-project


<게임>

http://code.google.com/p/cocos2d-iphone/

http://code.google.com/p/tris/ (테트리스)

http://code.google.com/p/mintgostop/ (고스톱)

http://www.joystiq.com/2009/03/24/carmack-releases-open-source-wolfenstein-for-iphone/

 

<google toolbox>

http://code.google.com/p/google-toolbox-for-mac/


<택배>

http://kldp.net/projects/taekbae/src

 

<이미지 프로세싱>

http://code.google.com/p/simple-iphone-image-processing/


<증강현실>

http://www.iphonear.org/


<coverflow 대체 구현>

http://apparentlogic.com/openflow/

http://www.chaosinmotion.com/flowcover.m (매가박스 어플에서 참고함)


<정규표현식 라이브러리>

http://blog.mro.name/2009/09/cocoa-wrapped-regexh/

http://regexkit.sourceforge.net/RegexKitLite/


<라이브러리 : JSON, DOM XML, Google Data APIs, Twitter, Flick, Game Engines, Unit Testr>

http://www.codingventures.com/2008/12/useful-open-source-libraries-for-iphone-development/


<기타>

http://open.iphonedev.com/

http://joehewitt.com/post/the-three20-project/

[출처] iPhone Open Source 모음  (맥부기 아이폰(iPhone)OS 개발자모임) |작성자 낙수

Posted by 닉네임영역
,

키체인 접근 > 인증지원 > 인증서 생성


1. 인증서 생성

이름 : iPhone Developer

신원 유형 : 자체 서명 루트

인증서 유형 : 코드 서명

 기본값 덮어쓰기 체크


이후 계속 진행


인증정보에 이메일 주소 넣고 이름(일반 이름)에 iPhone Developer 입력 국가 KR 입력 후 진행


인증 지원 키크기 2048비트 알고리즘 RSA 선택 후 계속 진행 후 인증서 생성


2. Info.plist 파일 수정

/Developer/Platforms/iPhoneOS.platform/Info.plist 파일 수정

<key>PROVISIONING_PROFILE_ALLOWED</key>

<string>NO</string>

<key>PROVISIONING_PROFILE_REQUIRED</key>

<string>NO</string>


3. 어플 넣기

Xcode > Window > Organizer > 어플 추가

Posted by 닉네임영역
,

0. 어플 로딩시 이미지 보여주기

     Default.png 라는 이름으로 이미지파일을 만들어서(320*480 size) 

     Xcode 프로젝트 안에 넣은 실행하면 어플 로딩시 Default.png이미지가 나옵니다

     plist파일 안의 Icon file 항목에 기재하지 않더라도

     icon.png라는 파일을 알아서 찾아서 아이콘으로 생성한다.


1. Warning을 Error로 인식시키기

1.1 File > Get Info의 Build 탭에서 검색필드에 error 입력

1.2 가장 아래의 Treat Warning as Errors 체크박스 체크

1.3 검색 필드 왼쪽에 Configuration을 All Configuration으로 선택


2. 문자열 앞에 @를 붙이면 NSString Type이라는 것을 나타냄


3. 터미널에서 실행할때 자동으로 파라미터를 넘겨주는 방법

3.1 Groups & Files에서 Executables 더블클릭해서 프로젝트 이름 더블 클릭

3.2 Arguments에서 윗부분에 + 클릭 후 파라미터 값 입력


4. 확장자가 .mm이면 이는 objectiv-c++ 코드를 사용한다는 것을 컴파일러에게 알려주는 것임


5. 헤더 파일을 포함하는 두 가지의 경우에 대한 차이점

5.1 <> : 시스템 헤더 파일을 가져옴. 읽기 전용

5.2 "" : 이 프로젝트에서만 사용되는 헤더 파일을 나타냄. 변경 가능


6. 정렬

6.1 선택 영역 자동 정렬 : control + left click > Re-Indent Selection

6.2 선택 영역 탭바만큼 밀기 : command + [

6.3 선택 영역 탭바만큼 땡기기 : commmand + ]


7. Code sense

7.1 팝업창에서 맨 왼쪽의 박스 심볼 

7.1.1 E : enum

7.1.2 f : 함수

7.1.3 # : #define

7.1.4 m : 메소드

7.1.5 C : 클래스 

7.2 esc : 코드 완성 메뉴를 보여줌

7.3 Control + . : 코드 완성에서 알맞은 다음 코드를 보여줌

7.4 Shift + Control + . : 코드 완성에서 알맞은 이전 코드를 보여줌

7.5 Control + / : 코드 완성에서 다음 입력 영역으로 이동


8. Snapshot(Command + Control + S)

8.1 현재 코드 상태를 저장해 놓은 임시의 파일이라고 생각하면 된다.

      현재 코드 스냅샵을 찍어 놓고 파일을 수정 한 후에 (저장을 해야 현재 상태 변화를 파악함)

      File > Snapshot 을 누르면 저장해 놓은 당시의 소스와 현재 저장된 소스의 달라진 점을

      한눈에 파악 가능하게 해준다.

      일반적인 스냅샷이라고 생각하면 화면읠 찍어두는 프린트 스크린을 생각할 수 있다.

      하지만 이것은 소스가 화면을 넘어가 스크롤이 생기더라도 적용이 가능하다

      즉 화면에 국한된것이 아니고 모든 소스(현재 활성화되어 있는)에 대해 적용된다는 것이다.

      < 한번 직접 해보길 바란다. >

8.2 ~/Library/Application Support/Developer/Shared/SnapshotRepository 폴더에

      디스크 이지를 저장한다. 만약 이 디스크 이미지에 문제가 생긴다면

      Xcode가 [snapshot Failed : A project snapshot cannot be created]라고 메시지를 띄움

      만약 그렇다면 이미지를 제거하고 재부팅을 해야 함


9. 검색 치화

9.1 Edit > Find

9.2 Refactoring : 해당 단어에 커서를 위치시키고 Edit > Refactor 선택

      다이얼로그가 뜨면 커서에 위치한 단어 대신에 다른 단어 입력

      만약을 위해 Snapshot 항목 체크하고 Preview로 미리 변화될 부분 확인

      Preview 클릭 후 Apply 클릭하면 Refactoring 되어있음.


10. 커서 이동(영문으로 되어 있어야 동작함 -_-^)

10.1 Control + F : 앞으로, 한칸 이동

10.2 Control + B : 뒤로, 한칸 이동

10.3 Control + P : 이전 라인으로 이동, 위로 한줄 이동

10.4 Control + N : 다음 라인으로 이동, 아래로 한줄 이동

10.5 Control + A : 라인의 시작으로 이동 (Command + 왼쪽 화살표)

10.6 Control + E : 라인의 끝으로 이동(Command + 오른쪽 화살표)

10.7 Control + T : 커서 옆의 문자로 변경

10.8 Control + D : 커서의 오른쪽 문자를 지움

10.9 Control + K : 라인의 나머지 부분을 지움

10.10 Control + L : 현재 입력하고 있는 부분을 윈도우의 가운데로 옮겨 줌

                             커서가 중심이 되어 화면 이동


11. 파일 열기 : 마우스 커서를 파일 이름에 놓고 File > Open Quickly 클릭

                       Command + Shift + D


12. 북마크 : Edit > Add to Bookmarks or Command + R

                   확인은 Group & Files 의 Bookmarks에서 확인 가능


13. 코드 에디터 창 나누기 : 우측 스크롤바와 자물쇠 아이콘 사이의 아이콘을 누르면 창 분할됨


14. 프로그램 실행 : Command + R


15. 디버그

15.1 실행 : Command + Y

15.2 Break Point : Command + \

15.3 다시 실행 : Command + Option + P

15.4 한줄 실행 : Command + Option + O

15.5 한줄 실행(함수나 메소드 있는 곳 탐색) : Command + Shift + I








Posted by 닉네임영역
,
TouchXML을 사용하기 위한 설정

1. 프로젝트 우클릭에서 Get Info 들어가서 build에서
    Setting 항목의 Search Paths 그룹의 Header Search Paths에 /usr/include/libxml2 값 설정.
    Setting 항목의 Linking 그룹의 Other Linker Flags에 -lxml2 값 설정

p.s) Paths를 제대로 인식못하여 에러가 몇백가 난다면 Paths를 다음과 같이 수정하면 된다.
       $SDKROOT/usr/include/libxml2
Posted by 닉네임영역
,

1. Messages

메시지 전송할 때 사용됩니다. ”[ ]”로 싸서 표현합니다.

[receiver message]

receiver는 변수, 자기자신, 클래스 이름등 사용 가능하며  메시지는 receiver에게 무엇이든 전달할 수 있다.

 

2. Defined Types

Objective-C에서 사용되는 주요 타입은 “objc/objc.h”에 정의되어 있다.

타입

정의

id

객체를 가리킴. 인스턴스에 대한 포인터

Class

클래스 자체에 대한 포인터

SEL

메소드의 이름을 선택하기 위한 선택자, 이름과 모든 콜론(;)을 포함

IMP

id를 리턴하는 메소드의 구현부에 대한 포인터

BOOL

이진값. YES 또는 NO

Nill

Null object

 

Preprocessor Directive(전처리기 지시자)

#import

.h 헤더파일을 import

#include

.h 헤더파일을 include(#import와는 달리 여러 번 수행됨)

//

주석(comment)

 

3. Compiler Directive

Complier 지시자는 “@”로 시작한다.

 

다음은 classes, categories, and protocols의 선언과 정의에 쓰이는 지시자이다.

Directive

정의

@interface

class 또는 카테고리 interface의 선언 시작

@implementation

class 또는 카테고리의 선언 시작

@protocol

형식 프토토콜 선언 시작

@end

Class, category 또는 protocol의 선언/정의를 끝낸다.


다음은 instance변수들의 visibility를 설명한 상호 배타적인 지시자이다.

Directive

정의

@private

instance변수의 범위를 그것이 선언된 class로 한정한다.

@protected

instance변수의 범위를 선언되고, 상속된 class로 한정한다.

@public

instance변수의 범위에 대한 제한을 없앤다.

 

다음은 exception handling을 지원하는 지시자이다.

Directive

정의

@try

Exceptions이 던져질 수 있는 block을 정의한다.

@throw

Exception object를 던진다.

@catch()

@try bolck안에서 던져진 exception을 catch한다.

@finally

@try block에서 Exceptions가 던져지던 아니던 수행되어질 block code를 정의한다.

 

다음은 declared properties feature를 지원하는 지시자이다.

Directive

정의

@property

Declared property의 선언을 시작한다.

@synthesize

Compiler에 custom implementations이 없는 accessor methods를 생성하도록 요청한다.

@dynamic

만약 이름이 따르는 properties와 관련있는 acessor methods의 implementation을 발견하지 못하면 compiler에게 warning을 생성하지 않도록 지시한다.

 

추가적으로 특별한 목적을 위한 지시자들이 있다.

Directive

정의

@class

다는 곳에서 정의된 class들의 이름을 선언한다.

@selector(method_name)

Method_name을 식별하는 compiled selector를 리턴한다.

@protocol(protocol_name)

protocol_name protocol을 리턴한다.(protocol class의 instance).

(@procotol은 forward declarations를 위해서는 (protocol_name)없이도 유효하다.

@encode

type_spec의 type structure를 encode한 char string을 가져온다.

@"string"

현재 모듈에서 Constant NSString object를 정의하고, 주어진 스트링으로 object를 초기화 한다.

MAX OS X v10.4와 이전, string은 7-bit ASCII-encoded 이어야 한다.

MAX OS v 10.5와 이후(Xcode 3.0과 이후), UTF-16 encoded string을 사용할 수 있다.

(MAC OS v10.2와 이후는 UTF-16encoded string을 지원한다. 그래서 MAC OS X v10.2와 이후에서 만약 app를compile하기 위해 MAC OS X v10.5를 사용하면, UTF-16 encoded string을 사용할 수 있다.)

@"string1" @"string2" ... @"stringN"

현재 모듈에서 constant NSString object를 정의한다.

생성된 string은 두지시자에서설명된 string을 연결한 결과이다.

@synchronized()

한번에 한 thread에 의해서만 실행되어져야 하는 code의 block을 정의한다.

 

4. Class

@interface 지시자로 선언된다.

#import "ItsSuperclass.h"
 @interface ClassName : ItsSuperclass < protocol_list > {
    instance variable declarations
}
method declarations
@end

 
자기 소유의 interface를 import할 때 선언하는 class.

#import "ClassName.h"
 
@implementation ClassName
method definitions
@end

 

5. Categories

Class와 동일하게 작성된다.

#import "ClassName.h"
@interface ClassName ( CategoryName ) < protocol list >
method declarations
@end

 

#import "CategoryName.h" 
@implementation ClassName ( CategoryName )
method definitions
@end

 

6. Formal Protocols(형식 프로토콜)

@protocol 지시자로 선언된다.

@protocol ProtocolName < protocol list >
declarations of required methods
@optional
declarations of optional methods
@required
declarations of required methods
@end

 

@optional 다음 method가 optional이란 걸 설명한다.

@required 다음 method가 protocol을 채택한 class에 의해 implement되어야 함을 설명한다. Default값

@protocol ProtocolName protocol에 대한 forward reference를 만든다.

@protocol ProtocolName;

 

소스내에서 protocol은 @protocol(protocol_name)와 비슷하게 사용되어 참조된다.

<protocol name list>는 다음 세가지 용도로 쓰인다.

- protocol 선언에서 다른 protocol들을 합치기 위해

- class나 category 선언에서, protocol을 채택하기 위해

- type 상술에서, type을 protocol을 따르게 하는 object에 한정하기 위해

Type Qualifier

정의

oneway

Method는 비동기적 메시지를 위한 것이고, 유효한 리턴타입를 가지지 않는다.

in

Argument는 remote receiver에 information을 pass한다.

out

Argument는 Reference에 의해 리턴된 정보를 get한다.

inout

Argument는 Information을 pass하고, get한다.

bycopy

Proxy가 아닌, Object의 copy로 pass나 return되어야 한다.

byref

현재 모듈에서 constant NSString object를 정의한다.

생성된 string은 두지시자에서설명된 string을 연결한 결과이다.

@synchronized()

Copy가 아닌 Object에 대한 reference로 pass나 return되어야 한다.

 

7. Method 선언

“+” class method 선언

“-” instance method 선언

Argument와 리턴 타입은 C문법에서의 type casting하는 방법으로 선언된다.

Argument는 “:”다음에 선언된다.

- (void)setWidth:(int)newWidth height:(int)newHeight

동일한 선언

- (void)setWidthAndHeight:(int)newWidth :(int)newHeight

 

8. Method Implementations

각각의 method implementation은 두개의 숨겨진 인자가 넘겨진다.

- receving object(self)

- method selector(_cmd)

유효한 다른 리턴을 갖지 않은 Method는 전형적으로 void를 리턴한다.

 

9. Deprecation Syntax

@interface SomeClass
-method __attribute__((deprecated));
@end

또는

#include <AvailabilityMacros.h>
@interface SomeClass
-method DEPRECATED_ATTRIBUTE;  // or some other deployment-target-specific macro
@end

Objective-C 2.0 이후 버전에서만 적용됩니다.

 

10. Naming Conventions(규칙,틀)

Class, category, and protocol 이름을 대문자로, Methods, instance variables은 소문자로 시작

“_”로 시작하는 method는 Apply에서 사용되어지도록 예약된 것임

같은 클래스의 Protocol, category는 protected name space를 가지고 있어,

Protocol은 class, category, 그 밖의 것과 같은 이름을 가질 수 있고,

한 class의 Category는 다른 class의 category와 같은 이름을 가질 수 있다.

Class name은 global variables나 defined type 처럼 같은 name space를 가지고 있어,

프로그램은 class와 같은 이름의 global variables를 가질 수 없다.

출처 : http://www.howapp.com

Posted by 닉네임영역
,

1 . Objective-C란 ?

Objective-C는 미국의 브래드 콕 (Brad Cox)씨가 1986년 처음으로 개념을 발표하고 만든 하이브리드 언어 입니다.
많은 부분이 C와 유사하고 약간의 객체지향적인 부분을 합쳐서 만든 언어 입니다.
주로 스몰톡의 객체지향적인 부분을 합쳐서 만든언어라 C++이나 여타 컴파일러식 객체지향적인 언어에 비해
보다 더 객체지향적인 성격을 많이 가지고 있습니다.
Dynamic binding , Dynamic loading , Dynamic typying 등을 지원 다른 언어보다 월등한 유연성을 보여 줍니다.
그리고 이런 언어의 특징들 때문에 nextstep이라는 최초의 객체지향 OS에 과감하게 사용되었으며 , 이후 MacOS X에도 역시 핵심적인 부분에 채용되게됩니다.

넥스트사의 설립자인 스티브 잡스가 Objective-C에 대한 판권을 가져오고 다시 이걸  GNU에 기증하여, 지금의 GCC에도 Objective-C가 포함되게 되었습니다.
뛰어난 능력을 가지고, 쉽게 구할수 있음에도 불구하고 국내에는 Objective-C에 대한 자세한 입문서나 프로그래밈 가이드가 없고 , 관심을 가지고 있는 분들도 적어서 많은 장점들이 알려지지 못하고 별로 쓰이지 않는 언어로 남아있습니다.


2. 간단한 문법

 
#include
// @ 예약어
@interface Sample : Object {            // 선언
   @public            // 슈퍼 클래스                                               
     id pub;
   @protected
     int pro ;
   @private
     int pri;
}
+(id)new;                                         // ' + ' : 클래스 메소드
-(id)init;                                           // ' - ' : 인스턴스 메소드
-(int)sample;                                    // ' ( ) ' : 리턴 타입
-(id)sample : (id)arg ;
@end                                               // 정의 끝
                                                       // data type ' id ' : 인스턴스를 의미하는 data type 
                                                                                  클래스에 대한 포인터 값 가진다.
@implementation Sample
+(id)new {
   id object;                                       // 인스턴스 얻는 법
   object = [self alloc];                       // id obj = [Sample alloc];
   [object init ];                                     리턴값            클래스 메소드
   return object ;                           //  &  클래스의 인스턴스
}
-(id)init {                                                     
   [super init ];                           // ' [ ] ' : 클래스와 인스턴스 메소드 호출
   return self ;                              // super : 슈퍼클래스 | self : 자기 자신
}
-(int) sample {                            // C문법 : fun(arg1, arg2) = objC문법 : [obj method: arg1 : arg2]
   return pri ;                                // 추상 클래스 { return; } <-- 이렇게만 해도 됨
}
-(id) sample : (id)arg {
   pub = arg ;
   return self;
}
@end



3. Dynamic binding , Dynamic typying , Dynamic loading
Dynamic binding은 객체의 메소드를 호출할 때 그 메소드가 뭔지를 정적으로 컴파일 시에 결정할 수 없다는 걸
의미합니다.
C++에서도 버추얼을 이용하면 동일한 기능을 수행하게 되지요. 버추얼이 아닌 C++에서 Sample.new();라고 쓴다면 new함수에 대한 포인터를 컴파일 시에 확보하게 되고 이 주소로 호출하는 동작을 합니다. (Objective-C는 모두 포인터이므로 c++를 예로 들경우 포인터라고 생각하시면 됨) 하지만 Objective-C에서는 콜하는 주소를 컴파일 할 때도 결정할 수가 없습니다. 다만 실행시간 중에 펑션이 있는 주소를 찾아서 그부분의 함수를 호출합니다.
순수하게 함수를 호출하는데 걸리는 시간은 일반적인 C++보다는 많이 걸리게됩니다만, 그차이는 그렇게 심하지 않고 유연성은 더 커집니다. 흔히 trade off라고 하는데 성능을 우선시 할것인가 아니면 유연성을 우선시 할 것인가 하는 문제죠.
나중에 언급하겠지만 빈번하게 한 메소드를 호출할 경우 IMP를 사용해서 메소드를 함수 형태로 호출할 수도 있습니다.

Dynamic typying은 데이터 타잎이 어떤 클래스인지 컴파일 시에 알수 없다는 것을 말합니다. C++같이 타입을 엄격히 체크하는 언어에서는 타잎이 반드시 일치해야 합니다만, Obejctive-C에서는 모든 인스탄스는 id일 뿐입니다. 따라서 인스탄스가 어떤 클래스의 인스탄스인지 실행하고 확인하기 전에는 알 수가 없습니다.

Dynamic loading은 클래스를 실행시간 중에 새로 넣을 수 있다는 뜻입니다. 일종의 플러그 인을 생각하시면 됩니다.


4. selector(동적 메소드 콜)

if (j < 10)
    n= @selector(new);                   // [Sample new]
else
    n= @selector (alloc);                 // [Sample alloc]

[Sample perform: n ];


5. category
    : 이미 존재하는 클래스에 새로운 메소드를 추가하기 위해 제공되는 기능이다. 이를 통하여 별도의 subclass
     
만들지 않고서도 기존의 클래스의 기능을 확장할 있다. 단, category로 새로운 instance variable을 추가할 수
      는 없고, 기존의 메소드와 name collision(이름 충돌)이 일어날 경우 category에서 새로 정의된 메소드가 그 이름
      을 가져간다는 점에 주의해야 한다

 
@interface Sample ( Cat )
-(id)cat ;
-(int)sample;
@end

@implementation Sample (Cat)
-(id) cat
{
printf ("This is category sample \n");
return self ;
}
-(int) sample
{
printf("This is Category Sample method (sample)\n");
return pri ;
}
@end

Posted by 닉네임영역
,


사랑합니다. 편안히 잠드소서