Мне нужна помощь здесь, поэтому я сделаю все возможное, чтобы объяснить. Я работал над этим весь день и не имели успеха (только учится!)Проблема с переменными областями, 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» uneclared (сначала использовать в этой функции) и предупреждения, такие как предупреждение: «return» со значением, в функции, возвращающей void. Извините за длинный вопрос!
Большое спасибо, Стюарт
Она объявлена в моем файле .h, как результаты NSArray * – Stumf
Когда вы установить его? Если он объявлен как ivar, он не даст вам «результат необъявленной» ошибки времени компиляции, но «результаты не определены» или «не установлены» или что-то подобное этой ошибке во время выполнения. Что вы получаете? –
Он был необъявлен, но теперь он сортируется. Когда я помещаю этап отображения или любой из двух методов NString в viewDidLoad или в buttonClick, я снова получаю «необъявленный». Я, вероятно, делаю основную ошибку или неправильно понимаю концепцию. – Stumf