还有一个 C#/.NET 人试图学习 Objective-C,并梦想通过 iPhone 应用赚取数百万美元 :)
好的,我确定这个问题源于我非常习惯于静态类型语言,因此很难调整,但这是我的问题。假设我有一个名为 MyObect 的类:
我的对象.h
@interface MyObject : NSObject
{
}
-(void)Foo;
@end
我的对象.m
#import "MyObject.h"
@implementation MyObject
-(void)Foo
{
//do something fooey
}
@end
现在我试图弄乱这些对象的 NSMutableArray ,所以在我的主要内容中,我填充了这些对象的数组,如下所示:
NSMutableArray *array = [[NSMutableArray alloc] init];
for(int i = 0; i<10;i++)
{
MyObject *obj = [[MyObject alloc]init];
[array addObject:obj];
}
没有什么花哨。然而,现在我试图取出数组的第一个,并调用 foo 方法。所以,这就是我感到困惑的地方。我试过这个:
MyObject *obj = [array objectAtIndex:1];
[obj Foo];
虽然这可行,但我收到了 MyObject 可能无法响应 message 的警告。所以,我想,好吧,让我投吧:
MyObject *obj = (MyObject *)[array objectAtIndex:1];
[obj Foo];
这也给了我警告。
我想我的问题是关于如何将项目存储在集合中以及如何将它们拉出并仍然保留对象类型的基本问题。同样,我来自 .NET 背景,所以我的想法可能存在根本缺陷,所以如果有人能指出我正确的方向,我将不胜感激。
编辑:我的原始代码实际上在演员表中有星号(没有它你会得到一个编译错误)。它仍然显示警告...