2009-09-19 3 views
0

과제 1b의 스탠포드 아이폰 클래스 4 섹션에 문제가 있습니다.스탠포드 cs193p - PrintIntrospectionInfo - 섹션 4 할당 1b

어떻게 배열을 만들지 이해하는 데 어려움을 겪고 있습니다. 할당이 필요합니다.

배열이 "글로벌"변수 여야합니까? 어디에서 정의해야합니까? 다른 하위 함수가 변수를 배열에 추가합니까? PrintIntrospectionInfo 함수는 바로 을 통해 열거하고 모든 내성적 인 정보를 인쇄합니까?

이 과제에서 내가 요청하는 사항은 어디에서 읽을 수 있습니까? 무엇을 읽어야합니까?

수업을 듣지 않아서 누군가 내가 코드를 보낼 수 있습니까? 수업이 서로 이루어지기 때문에 계속 진행하고 싶습니다.

여기 과제입니다 :

오브젝티브 C는 동적 객체 지향 기능에 추가 시설을 갖추고 있습니다. 많은 설비의 은 런타임에 객체의 기능을 결정하고 사용하는 것을 다룹니다. 변경 가능한 배열을 만들고 다양한 유형의 객체를 추가합니다. 배열을 채우기 위해이 과제의 다른 곳에서 사용한 클래스의 인스턴스를 만듭니다 : NSString, NSURL, NSProcessInfo, NSDictionary 등 NSMutableString 인스턴스를 만들고 배열에도 넣으십시오.
다른 종류의 개체도 자유롭게 만들 수 있습니다.
배열의 객체를 반복하고 다음을 수행하십시오. 1. 객체의 클래스 이름을 인쇄하십시오. 2. 개체가 NSString 클래스의 멤버인지 기록합니다. 3. 개체가 NSString 클래스의 종류인지 기록합니다. 4. 개체가 선택기 "lowercaseString"에 응답하는지 기록합니다. 페이지 5 개체의 lowercaseString 선택에 응답하는 선택을 수행 할 수 객체를 요청의 결과를 기록 않을 경우 6 5의 (performSelector : CS193P 할당 1B 2009 년 봄 인형/카니 스트라

답변

2

Xcode와 함께 제공되는 코코아 및 objective-c 매뉴얼에서 답변을 찾을 수 있습니다.

#import <Foundation/Foundation.h> 

void printIntrospectionInfo() 
{ 
    NSMutableArray * array = [NSMutableArray arrayWithCapacity:5]; 
    [array addObject: [NSString stringWithString:@"Example NSString object"]]; 
    [array addObject: [NSMutableString stringWithString:@"Example NSMutableString object"]]; 
    [array addObject: [NSURL URLWithString:@"http://apple.com.au"]]; 
    [array addObject: [NSProcessInfo processInfo]]; 
    [array addObject: [NSDictionary dictionaryWithObject: @"DictObject" forKey: @"KeyObject"]]; 
    [array addObject: [NSNumber numberWithInt:123456]]; 

    SEL sel_lowercase = @selector(lowercaseString); 

    int i; 
    for (i = 0; i < [array count]; ++i) 
    { 
     id o = [array objectAtIndex:i]; 

     NSLog(@"%@", o); 
     NSLog(@"Class name: %@", [[o class] className]); 
     NSLog(@"Is Member of NSString: %@", ([o isMemberOfClass: [NSString class]] ? @"YES" : @"NO")); 
     NSLog(@"Is Kind of NSString: %@", ([o isKindOfClass: [NSString class]] ? @"YES" : @"NO")); 
     NSLog(@"Responds to lowercaseString: %@", ([o respondsToSelector: sel_lowercase] ? @"YES" : @"NO")); 

     if ([o respondsToSelector: sel_lowercase]) 
      NSLog(@"lowercaseString: %@", [o performSelector: sel_lowercase]); 

     NSLog(@"==================="); 
    } 

} 


int main(int argc, const char* argv[]) 
{ 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    printIntrospectionInfo(); 
    [pool release]; 
    return 0; 
} 
+1

좋은 예입니다. [o respondsToSelector : @selector (lowercaseString)]을 [o respondsToSelector : lowercase]로 대체하려는 경우 – mahboudz

+1

고정 ................. – stefanB

+0

감사합니다! 나는 당신이 과제를 다르게 해석하는 것을 봅니다. 그러나 그것은 훌륭합니다. 그것은 그들이 당신이 배우기를 바라는 것과 같은 종류의 시연입니다. – Neo42

1
를 사용하여

첫 번째 과제는 Objective-C에 대한 느낌만큼 디자인에 관한 것이 아니 었습니다. 전역 변수는 괜찮지 만 로컬 변수는 훨씬 쉽습니다.

+0

이 경우 전역 변수는 어떻게 작성합니까? 그것은 단지 .m 파일입니다. 또한 어떤 pdfs (및 페이지)를 읽어야합니까? 아니면 온라인 의사? – Neo42

+0

익숙하다면 C와 매우 흡사합니다. 다음과 같은 간단한 작업을 수행 할 수 있습니다. NSArray * array; (또는 필요한 경우 NSMutableArray) – Malaxeur

+0

어디서? 주요 기능 밖? – Neo42

1
나는 그들이이 과제에서 요구하는 것들에 읽을 수

? 무엇을 읽어야합니까?

로컬 대 글로벌 문제 (현지인이 더 좋음) 외에도 NSObject 문서를 읽으십시오. 네 가지 질문은 모두 NSObject가 구현 한 메서드로 수행 할 작업과 관련됩니다.

Objective-C도 잊지 마세요.

+0

NSObject 문서가 유용하게 보입니다. – Neo42

+0

모든 프레임 워크 클래스 참조가 있습니다. 문서를 다운로드하고 브라우저에서 쉽게 액세스 할 수 있도록 Foundation 및 AppKit (Mac)/UIKit (iPhone) 프레임 워크 참조의 로컬 사본을 북마크하는 것이 좋습니다. –

관련 문제