Iphone 可变范围问题

Iphone 可变范围问题,iphone,objective-c,arrays,uitableview,scope,Iphone,Objective C,Arrays,Uitableview,Scope,我需要一些帮助,所以我会尽力解释。我已经为此工作了一整天,但没有成功(只是学习!) 我有: NSArray *getValue(NSString *iosearch) { mach_port_t masterPort; CFTypeID propID = (CFTypeID) NULL; unsigned int bufSize; kern_return_t kr = IOMasterPort(MACH_

我需要一些帮助,所以我会尽力解释。我已经为此工作了一整天,但没有成功(只是学习!)

我有:

NSArray *getValue(NSString *iosearch)
{
    mach_port_t          masterPort;
    CFTypeID             propID = (CFTypeID) NULL;
    unsigned int         bufSize;

    kern_return_t kr = IOMasterPort(MACH_PORT_NULL, &masterPort);
    if (kr != noErr) return nil;

    io_registry_entry_t entry = IORegistryGetRootEntry(masterPort);
    if (entry == MACH_PORT_NULL) return nil;

    CFTypeRef prop = IORegistryEntrySearchCFProperty(entry, kIODeviceTreePlane,     (CFStringRef) iosearch, nil, kIORegistryIterateRecursively);
    if (!prop) return nil;

    propID = CFGetTypeID(prop);
    if (!(propID == CFDataGetTypeID())) 
    {
        mach_port_deallocate(mach_task_self(), masterPort);
        return nil;
    }

    CFDataRef propData = (CFDataRef) prop;
    if (!propData) return nil;

    bufSize = CFDataGetLength(propData);
    if (!bufSize) return nil;

    NSString *p1 = [[[NSString alloc] initWithBytes:CFDataGetBytePtr(propData)     length:bufSize encoding:1] autorelease];
    mach_port_deallocate(mach_task_self(), masterPort);
    return [p1 componentsSeparatedByString:@"\0"];
}



- (NSString *) serialnumber
{
    NSArray *results = getValue(@"serial-number");
    if (results) return [results objectAtIndex:0];
    return nil;
}

- (NSString *) backlightlevel
{
    NSArray *results = getValue(@"backlight-level");
    if (results) return [results objectAtIndex:0];
    return nil;
}
我已设置了tableView,并希望在其中显示我的阵列,因此我有:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {.............
.........................................................
cell.text = [results objectAtIndex:indexPath.row]; // error results undeclared here
    return cell;
}
在我的.h文件中,我有:

@interface UIDevice_IOKitExtensionsViewController : UIViewController {
    IBOutlet UITableView *tblSimpleTable;

    NSArray *results;


}

@property (nonatomic, retain) NSArray *results;
- (NSString *) serialnumber;
- (NSString *) backlightlevel;
问题是我得到了如上所述的未声明的结果。我也不知道如何在点击按钮时甚至在加载时显示serialnumber和BackgroundLevel。我的尝试在返回void的函数中抛出了错误,如未声明的错误:“serialnumber”(此函数首次使用)和警告,如带有值的警告:“return”。很抱歉问了这么长的问题

非常感谢,,
斯图尔特

你在哪里申报
结果
?从您发布的代码来看,它确实没有声明。如果您将其用作数据源,则可能应该将其设置为ivar。如果您不知道这意味着什么,那么如果您想了解iPhone的开发,这是一个很好的起点。

您是否在两个类级方法(serialnumber和BackgroundLevel)中保留了Resultl?例如,序列号应为:

- (NSString *) serialnumber
{
  NSArray *results = getValue(@"serial-number");
  if (results) return [[results objectAtIndex:0] autorelease];
  return nil;
}

它在my.h文件中声明为NSArray*results,您什么时候设置它?如果将其声明为ivar,则不会在编译时出现“results undeclared”错误,而是在运行时出现“results undefined”或“not set”之类的错误。你得到了什么?它没有申报,但现在已经分类了。当我将display stage或两个NString方法中的任何一个放在viewDidLoad或按钮单击中时,我再次得到“undeclared”。我可能犯了一个基本的错误或误解了一个概念。你是想把你的方法当作变量来使用,还是真的在调用它们<代码>[self serialNumber]或只是
serialNumber
?我没有使用[self serialNumber],应该吗?