Сначала установите глобальную переменную int:
@interface TableViewController () {
int arrNum;
}
@end
@implementation TableViewController
- (void)viewDidLoad {
[super viewDidLoad];
arrNum = 3;
}
Затем установите количество разделов:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
if (section == 0){
return arrNum;
}else {
return 5;
}
}
Затем создайте кнопку в нижнем колонтитуле раздела:
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
UIButton *btn = [[UIButton alloc]init];
[btn setTitle:@"btn Click" forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor blueColor]];
[btn addTarget:self action:@selector(btnClk) forControlEvents:UIControlEventTouchDown];
return btn;
}
Теперь установите необходимое действие при нажатии кнопки:
-(void)btnClk {
arrNum = arrNum + 2;
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}
Это в основном решено через.NET 2.0 DynamicMethod. Однако существует все еще вид отказа, если Вы не используете [XmlRoot] атрибут. Рассмотрите эту статью для деталей.
Часть, которая на самом деле вызывает утечку, - то, что блоки, сгенерированные механизмом XML в целях сериализации, никогда не собираются. С CLR 2.0SP1 (.Net 3.5) это все еще имеет место. После того как блок загружается в процесс, он не будет удален, пока AppDomain, содержащий тот блок, также не разгружен.
Если Вы замечаете у основания статьи, хотя, она упоминает способ заставить механизм XML снова использовать блоки, таким образом, память не выйдет из-под контроля.
Я столкнулся с той же проблемой с 2,0, таким образом, я могу подтвердить, что утечка памяти все еще существует там, но у меня нет опыта с 3,5. Пока Вы только используете конструкторов XmlSerializer (тип) и XmlSerializer (тип, defaultNameSpace) необходимо быть в безопасности, поскольку XmlSerializers будет автоматически кэшироваться. При использовании какого-либо из других конструкторов, необходимо будет создать собственный кэш.
Спасибо. Появляется, как будто ключ должен использовать XmlSerializer (тип) и позволить экземпляру в оперативной памяти оставаться кэшируемым. Кажется, что при искажении имени класса, кэш не работает, и утечки следуют.. Я должен буду протестировать и контролировать для знания наверняка, если мы без утечки. - Dustin