スタンフォード cs193p - PrintIntrospectionInfo - セクション 4 課題 1b
-
11-09-2019 - |
質問
スタンフォード iPhone クラスのセクション 4 の課題 1b で困っています。
配列の構築方法と、割り当てが何を期待するかを理解するのに苦労しています。
配列は「グローバル」変数であるべきでしょうか?それをどこで定義すればよいでしょうか?他の各サブ関数は変数を配列に追加しますか?printintropectionInfo機能は、すべての内省的な情報を列挙して印刷するためだけですか?
この課題で彼らが求めていることをどこで読むことができますか?何を読めばいいのでしょうか?
私はクラスを受講していないので、誰かがコードを送ってもらえますか?レッスンはお互いに蓄積されており、進めることができます。
割り当ては次のとおりです。
Objective-C には、動的なオブジェクト指向機能を追加する機能が多数あります。これらの施設の多くは、実行時にオブジェクトの機能を決定し、使用することを扱っています。可変配列を作成し、そこにさまざまなタイプのオブジェクトを追加します。この割り当ての他の場所で使用したクラスのインスタンスを作成して、配列を作成します。nsstring、nsurl、nsprocessinfo、nsdictionaryなど。いくつかの NSMutableString インスタンスを作成し、同様に配列に配置します。
他の種類のオブジェクトも自由に作成してください。
配列内のオブジェクトを反復処理して、次の操作を実行します。1.オブジェクトのクラス名を出力します。2.オブジェクトが NSString クラスのメンバーであるかどうかをログに記録します。3.オブジェクトが NSString クラスであるかどうかをログに記録します。4.オブジェクトがセレクター「 lowercaseString 」に応答したかどうかをログに記録します。ページ5/6 5。オブジェクトがLowerCaseStringセレクターに応答する場合、そのセレクターを実行するようにオブジェクトに依頼した結果をログにします(PerformseLector :) CS193P Assignment 1B Spring 2009 Doll/Cannistraro
解決
あなたはココアと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;
}