• 북마크
  • 추가메뉴
KMUG 케이머그

소프트웨어

[App 개발] Cocoa 에 대한 질문..

본문

코코아 책(정확히는 pdf...)을 열심히 보고 있는데..
정확히 이해를 했는지 못했는지 몰라서..

질문들을 올리겠습니다.

1.

NSMutableArray *array;
int i;
NSNumber *newNumber;
NSNumber *numberToPoint;

NSAutoreleasePool pool = [[NSAutoreleasePool alloc] init];

array = [[NSMutableArray alloc] init];
for(i = 0; i < 10; i++) {
newNumber = [[NSNumber alloc] initWithInt: (i * 3)];
[array addObject: newNumber];
// 만약 코코아에 대해 조금 알고 있다면 제가 메모리 누설을 만들었다는 것에 주목하셔야 됩니다.
// 우리는 있다가 이 문제를 수정하겠습니다.
}

...
....


... 이 소스코드 다 모릅니다!!
는 아니구요..
id 가 객체의 포인터라길래 맨 첫번째의 NSMutableArray * 나 NSNumber *, NSAutoreleasePool * 부분을 id로 바꿨는데요. 실행이 잘 되는 것입니다. id 가 모든 객체의 포인터로 사용할 수 있는 건가요?
가만히 생각해보니 id도 인스턴스가 되는거군 -ㅅ-;

2.

[foo insertObject:bar atIndex:5];

아무리 생각을 해봐도 이 부분은 잘 모르겠어요..ㅜㅜ
개념을 모르는 것은 아니구요.
콜론의 왼쪽부분이 설명을 하는 부분이라고 나오던데요.
insertObject, atIndex 메소드에 각각 bar, 5 argument 를 넣는건지.. 아니면 단지 설명만 하는 부분인지..
잘 모르겠어요.
엇그제 답변 해 주신 것 같았는데.. 저장을 못하는 바람에..ㅜㅜ

부탁드립니다..ㅜㅜ
0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
포인트 38,308
가입일 :
2005-08-18 19:01:33
서명 :
미입력
자기소개 :
미입력

최신글이 없습니다.

최신글이 없습니다.

댓글목록 3

빵발이아빠님의 댓글

2. 둘 다 argument 로 넘어가는 것입니다.
foo 오브젝트에 insertObject:atIndex 라는 메쏘드를 부르는데, 첫 번째 argument 가 bar, 두 번째 argument 가 5 가 되는 것이지요.

hongjuny님의 댓글

첫 번째 질문 내용이 약간 모호하네요.

그러니까, 예를 들어 첫 번째 문장의 NSMutableArray *array; 를 NSMutableArray array; 와 같은 형식으로 바꾸어 정의해도 프로그램이 문제없이 작동하더라는 뜻인가요?

실제 그렇게 하면 컴파일이 성공하지 않고 statically allocated instance 라는 에러가 나올 거예요.

그리고, 두 번째 질문은 Obj-C 의 특장점 중 하나인 self-explanatory 메쏘드 선언 이라는 것인데요, 빵발이아빠님 답변이 정확하고요. 주로 Obj-C 에서 이런 부분을 좀 더 명확히 하기 위해서 소스를 보기좋게 이런 식으로 만들어 놓기도 하지요.

[foo insertObject: bar
              atIndex: 5];

이렇게 하면 foo 라는 객체의 메쏘드 insertObject 의 argument 로서 bar 를 넣는데, 그 인덱스가 5 이다... 라는 것이 확실하게 표현되지요. 메쏘드 선언 자신이 그 특성을 설명한다는 self-explanatory 가 됩니다.

hongjuny님의 댓글

프린이님과의 대화 이후 첫 번째 문제가 해결되어 다시 첨언합니다.

프린이님의 질문을 제가 잘못 이해해서 발생한 문제였습니다. -_-;

NSMutableArray *array; <=== 이 문장을

id array; <=== 이렇게 바꾸었을 때

잘 실행되는 것이 맞느냐? 라는 질문이었고 -_-;;

Objective-C 에서 id 라는 type 은 형식 불문한 일반 객체를 선언하는 내용이라는 정리 였습니다. ^^

댓글쓰기

적용하기
전체 529 건 - 3 페이지
2007.08
07

[App 개발] 자동으로 운영체제 키보드 레이아웃을 바꾸는 법에 관해서...

제가 제 개인적인 필요 때문에 타자 연습 프로그램을 만들고 있는데요. 프로그램에서 한글이나 영어 언어를 선택하고 연습 할 때 그 때마다 운영체제의 키보드 레이아웃도 한글이나 영어로 맞춰줘야 되서 불편한데요. 프로그램에서 언…

2007.07
29

[App 개발] Chapter 7의 8쪽에서의 질문....(Cocoa Programming for Mac OS X 2/E)

- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index { // Add the inverse of this operation to the undo stack NSUndo…

2007.07
16

[App 개발] helper object 에 관해서...

제가 코코아 책 보며 Helper Object 를 공부하는 중인데 아무리 생각해봐도 도무지 무엇인지 잘 이해가 되지 않습니다. 미숙한 번역실력 때문인듯.. 아무튼 제가 생각하는 helper object 는 클래스를 확장할 때 사용하는 객…

2007.07
01

[App 개발] Xcode 편집기에서 한글 입력할 때의 문제점에 대한 질문

안녕하세요. Xcode를 사용해서 ASCII 텍스트 형태의 소스 코드에 한글 주석을 입력하다 자꾸 특정 부분에서 아래와 같은 메시지 박스가 떠서 문자를 입력할 수가 없는데, 어떻게 하면 될지 그 해결 방법이 궁금합니다. 입력 문자열: 그…

2007.06
17

열람중 [App 개발] Cocoa 에 대한 질문..

코코아 책(정확히는 pdf...)을 열심히 보고 있는데.. 정확히 이해를 했는지 못했는지 몰라서.. 질문들을 올리겠습니다. 1. NSMutableArray *array; …

2007.06
06

[App 개발] 다시한번 질문.....

안녕하세요 아래 올렸던 내용과 비슷한데, 해결이 잘 안되서 다시 질문을 드립니다. 하드 디스크의 특정 디렉토리에서 파일의 유무를 검사해야 하는데요, 하드 디스크의 이름이 "ccc" 라면, open("ccc:어쩌구:파일", "r")…

2007.04
28

[App 개발] Dev C++에서 GLUT사용하는법을....

Visual Studio 쓰자니 다운하긴 좀 그렇고.. Express 는 아주 많이 부족하고... 그래서 Dev C++ 를 다운하려고 하는데요. 도대체 이걸로 GLUT프로그래밍 하는 법을 모르겠네요... 윈도우 어플로 GL 프로그래밍하는…

2007.01
27

[App 개발] OpenCV 1.0.0 Frameworks

wlee 님 뿐만 아니라 Mac 에서 이미지 프로세싱 관련 연구를 하시는 분들에게 유용한 툴이 될 듯 싶습니다. 좋은 라이브러리를 알게 되어 wlee 님께 감사말씀 드립니다. ^^ 물론 1.0.0 을 그대로 command-line 으로 컴파일해도…

2007.01
20

[App 개발] [질문] 외부 라이브러리 다시 한번 ~

질문 1. 외부 라이브러리를&nbsp;&nbsp;External Frameworks and libraries 폴더에 추가하기 위해, 오른쪽 버튼 -&gt; Add-&gt;existing files.. 를 선택해서…

2006.12
28

[App 개발] Xcode 에서 디버그 모드 ... 릴리즈 모드...

비주얼 스투디오에서는 빌드 아이콘 옆에 디버그 모드 릴리즈 모드 선택할 수 있어서 편했는데 Xcode 는 어떻게 하나요 오픈지엘 공부하면서 제가 만든 프로젝트들은 Build/Debug 디덱터리에 실행파일이 생기는데 책…