После получения UITableView Section и Row ... что делает этот код? - PullRequest
0 голосов
/ 20 июля 2011

Может кто-нибудь объяснить мне, что этот код делает после получения NSArray ....

- (UIViewController *)sampleForIndexPath:(NSIndexPath *)indexPath {

    NSArray *samples = [samples_ objectAtIndex:indexPath.section];
    Class clazz = [samples objectAtIndex:indexPath.row];
    UIViewController *instance = [[clazz alloc] initWithNibName:nil bundle:nil];
    return [instance autorelease];
  }

Я получаю NSArray of Section ... тогда как мы можем присвоить значения строки классу?

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

Здесь массив samples содержит объекты типа Class . Вы можете создать экземпляр класса напрямую, используя имя класса или используя объект / переменную Class . Например,

/* One Way */

// Create an instance of MyViewController deirectly
UIViewController *vc = [[MyViewController alloc] init];

/* Another Way */

// The following line returns a class object
Class cls = NSClassFromString(@"MyViewController");
// The below is just for an example. This also returns a class object 
Class cls = [MyViewController class]; 
// Create an instance of MyViewController from the class object
UIViewController *vc = [[cls alloc] init];

Ваш код использует второй способ для выделения объекта контроллера представления из объекта класса, возвращаемого [samples objectAtIndex: indexPath.row] .

1 голос
/ 20 июля 2011

После получения массива он извлекает конкретный Class, используя:

Class clazz = [samples objectAtIndex:indexPath.row];

, а затем создает экземпляр объекта UIViewController с использованием класса и возвращает этот объект:

UIViewController *instance = [[clazz alloc] initWithNibName:nil bundle:nil];
return [instance autorelease];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...