从其类中调用时,方法可以正常工作,但不是

时间:2011-07-05 16:40:15

标签: objective-c ios cocoa-touch instantiation

我在RootViewController中写了这个函数。 appRecord是一个包含XML属性的对象。

- (NSString*) getString:(int)row{
    AppRecord *appRecord = [self.entries objectAtIndex:row];
    NSString *appName = appRecord.appName;

    return appName;
}

我想通过写这个来再次使用这个函数:

RootViewController *record = [RootViewController new]; 
NSString *appsName = [record getString:0];

NSLOG(appsName);

编译之后,它没有返回任何内容,但如果我在appsName类(RootViewController)中使用此函数,它会起作用并返回[self getString:0],所以我知道有这个功能没问题。当我尝试将return appName更改为return @"test"时,当我从其他类访问它时,它会起作用并返回一些内容。

这意味着此appRecord存在问题;它是在类中返回的,但是当我从另一个类访问它时没有返回任何内容。

如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

您将从<{1}} RootViewController self.entries实例中获取AppRecord。这意味着,除非您的record初始值设定项在调用new之前初始化并填充其entries变量(通过事物的外观),否则它将无法返回任何内容,因为该数组是空。

除此之外,我不知道你是否希望你的getString:方法访问不同的数组,或者问题出在getString:(int)的初始化中(更有可能)

答案 1 :(得分:1)

也许我不明白你的问题,但是如果你依靠NSLog语句来查看函数是否返回任何东西,你应该将它改为:

NSLog(@"%@", appsname);