我需要一些幫助,所以我會盡我所能解釋。我對這個整天工作,沒有成功(剛學的!)可變範圍問題,iPhone
我:
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'未聲明(首次在此函數中使用)和警告,如警告:'返回'的值,在函數返回void。很抱歉,很長的問題!
非常感謝, 斯圖爾特
它在我的.h文件中聲明爲NSArray *結果 – Stumf 2010-03-13 17:38:04
你什麼時候設置它?如果它被聲明爲一個ivar,它不會給你一個「結果未聲明」的編譯時錯誤,而是一個「結果未定義」或「未設置」或類似於運行時錯誤的東西。你得到哪個? – 2010-03-13 19:20:01
它沒有聲明,但現在已經排序。當我將display stage或兩個NString方法中的任何一個放在viewDidLoad中或在buttonClick中時,我再次獲得「未聲明」。我可能犯了一個基本錯誤或者誤解了一個概念。 – Stumf 2010-03-13 21:14:05