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],应该吗?