• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

소프트웨어

[기타질문] 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 은 형식 불문한 일반 객체를 선언하는 내용이라는 정리 였습니다. ^^

전체 9 건 - 1 페이지
2007.09
10

[기타질문] OS X 하위버전과 호환되게 만들려면 어떻게 해야 되나요?

OS X 타이거 만이 아닌 팬더, 재규어 등 그 이전의 mac os 와 호환되게 빌드하려면 어떻게 해야 되나요 그냥 빌드만 하면 되는줄 알았는데 동성님이 10.3에서 실행이 안된다 하드라구요. [UB로도...]

2007.08
16

[기타질문] 텍스트 입력을 받는 NSTextField 에서요...

블록 선택이 안 되고 오직 키보드 입력만 되게 하도록 만들려면 어떻게 해야 되나요 isSelectable 메소드를 사용하면 아예 입력이 안 되고.... 그리고 키보드 입력을 받을 때마다 액션을 내게 하려면 어떻게 해야 되지요

2007.08
07

[기타질문] 자동으로 운영체제 키보드 레이아웃을 바꾸는 법에 관해서...

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

2007.07
29

[기타질문] 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

[기타질문] helper object 에 관해서...

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

2007.06
17

열람중 [기타질문] Cocoa 에 대한 질문..

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

2007.04
28

[기타질문] Dev C++에서 GLUT사용하는법을....

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

2006.12
28

[기타질문] Xcode 에서 디버그 모드 ... 릴리즈 모드...

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

2006.08
27

[기타질문] OpenGL 질문....

1. 임플리먼테이션이 머죠 2. 소프트웨어와 하드웨어의 차이 3. 파이프라인이 무엇이죠 4. 파이프라인의 구조 부탁드립니다