stanford cs193p - PrintIntrospectionInfo - 第4节分配1b

时间:2009-09-19 02:12:40

标签: iphone objective-c cocoa cs193p

我在执行任务1b时遇到了stanford iphone课程第4部分的问题。

我无法理解如何构建数组以及如何构建数组 任务期望。

阵列应该是“全局”变量吗?我应该在哪里定义? 每个其他子函数是否会将其变量添加到数组中? PrintIntrospectionInfo函数是否可用于枚举 并打印所有内省信息?

在哪里可以阅读他们要求的内容 分配?我该怎么读?

我不上课,所以有人可以寄给我他们的代码吗?该 课程相互积累,我希望能够继续学习。

这是作业:

  

Objective-C有许多功能可以增加其动态的面向对象功能。许多   这些工具涉及在运行时确定和使用对象的功能。   创建一个可变数组并向其中添加各种类型的对象。创建类的实例   我们已经在这个赋值中的其他地方用来填充数组:NSString,NSURL,NSProcessInfo,   NSDictionary等创建一些NSMutableString实例并将它们放在数组中   随意创建其他类型的对象   遍历数组中的对象并执行以下操作:   1.打印对象的类名。   2.记录对象是否为NSString类的成员。   3.记录对象是否类NSString。   4.记录对象是否响应选择器“lowercaseString”。   第5页,共6页   5.如果对象确实响应了lowercaseString选择器,则记录询问的结果   对象执行该选择器(使用performSelector :)   CS193P作业1B   2009年春季Doll / Cannistraro

3 个答案:

答案 0 :(得分:2)

您可以在Xcode随附的cocoa和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 :(得分:1)

第一个任务不是关于设计,而是关于Objective-C的感觉。全局变量很好,但局部变量会容易得多。

答案 2 :(得分:1)

  

在哪里可以阅读他们在此作业中要求的内容?我该怎么读?

除了本地与全球问题(本地人更好)之外,请阅读NSObject文档。所有这四个问题都与NSObjects实现的方法有关。

不要忘记阅读Objective-C