0

我在作业 1b 的斯坦福 iphone 课程的第 4 部分遇到问题。

我无法理解如何构建数组以及作业的预期内容。

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

我在哪里可以阅读他们在这项作业中要求的内容?我应该读什么?

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

这是任务:

Objective-C 有许多增加其动态面向对象能力的工具。许多这些设施处理在运行时确定和使用对象的能力。创建一个可变数组并向其中添加各种类型的对象。创建我们在此分配的其他地方使用的类的实例以填充数组:NSString、NSURL、NSProcessInfo、NSDictionary 等。创建一些 NSMutableString 实例并将它们也放入数组中。
也可以随意创建其他类型的对象。
遍历数组中的对象并执行以下操作: 1. 打印对象的类名。2. 如果对象是 NSString 类的成员,则记录。3. 记录对象是否是 NSString 类。4. 记录对象是否响应选择器“lowercaseString”。第 5 页,共 6 页 5. 如果对象确实响应了小写字符串选择器,请记录要求对象执行该选择器的结果(使用 performSelector:) CS193P 作业 1B 2009 年春季娃娃/Cannistraro

4

3 回答 3

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;
}
于 2009-10-05T05:36:42.607 回答
1

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

于 2009-09-19T02:20:01.500 回答
1

我在哪里可以阅读他们在这项作业中要求的内容?我应该读什么?

除了 local-vs.-global 问题(本地人更好),阅读NSObject文档。所有四个问题都与您将使用 NSObjects 实现的方法做的事情有关。

不要忘记阅读Objective-C

于 2009-10-05T07:43:13.990 回答