Чтобы избежать сохранения циклов и предупреждения «захват себя сильно в этом блоке, вероятно, приведут к сохранению циклу» я быть_наст добавить для каждого объекта в моем блоке что-то вроде этогоНил __block переменная настройка по NSString
MyViewController *__weak weakSelf= self;
NSMutableArray *__weak weakArray=AnArray;
UILabel *__weak weakLabel=ALabel;
///the block code with some examples
up2.completionBlock = ^(NSDictionary *headers, NSString *responseString) {
[weakSelf aMethodInTheController];
[weakLabel setHidden:NO];
[weakArray addObject:@"something"];
};
при слабом обращении сохраняют предупреждения цикла исчезли, но есть проблема, если я ввести внутри блока с nnstring, который должен быть выставиться
MyViewController *__weak weakSelf= self;
NSMutableArray *__weak weakArray=AnArray;
UILabel *__weak weakLabel=ALabel;
NSString *__weak weakString=AString;
///the block code with some examples
up2.completionBlock = ^(NSDictionary *headers, NSString *responseString) {
[weakSelf aMethodInTheController];
[weakLabel setHidden:NO];
[weakArray addObject:@"something"];
[email protected]"atext";
};
Таким образом, я получаю ошибку «переменная не может быть назначен (отсутствует _ Тип блока МЭО)», поэтому я добавил„ _block“
MyViewController *__weak weakSelf= self;
NSMutableArray *__weak weakArray=AnArray;
UILabel *__weak weakLabel=ALabel;
NSString *__weak weakString=AString;
__block NSString *BlockString = weakString;
///the block code with some examples
up2.completionBlock = ^(NSDictionary *headers, NSString *responseString) {
[weakSelf aMethodInTheController];
[weakLabel setHidden:NO];
[weakArray addObject:@"something"];
[email protected]"atext";
};
Таким образом, все, кажется, правильно работать, по крайней мере, пока я не нахожусь внутри блока ... Моя исходная переменная Astring определяется в .h моего viewController, я должен получить доступ к его значению позже и за пределами блока, но его значение всегда равно нулю. Назначить @ "atext" для BlockString не установить значение для моей оригинальной переменной Astring? Как я могу сделать, чтобы установить значение переменной, установленной в .h моего viewController, без предупреждений и без выхода из блока?