2015-10-14 2 views
0

Я хочу получить arraycount внутри обработчика. Затем вызовите webservice в соответствии с Count.. Но количество массивов даст мне массив.Счетчик массива внутри обработчика

__weak NewsViewController *self_ = self; 
    [table addInfiniteScrollingWithActionHandler:^{ 
     NSLog(@"%lu",(unsigned long)[tableDataArray count]); // This Line give error Capturing self strongly in this block lead to retain cycle; 
     [self_ callWebService]; 
    }]; 
+0

попробуйте [self_.tableDataArray count]; – dirtydanee

+0

Не работает ... –

+0

tabledataArray не является объектом класса –

ответ

1

Попробуйте создать слабый указатель tableDataArray также (как и я)

__weak typeof(NSMutableArray*) _w_tableDataArray = tableDataArray; 
__weak NewsViewController *self_ = self; 
[table addInfiniteScrollingWithActionHandler:^{ 
     NSLog(@"%lu",(unsigned long)[_w_tableDataArray count]); // This Line give error Capturing self strongly in this block lead to retain cycle; 
     [self_ callWebService]; 
    }]; 
1

Хотя вы создаете слабое себя вы на самом деле не ссылающийся его в блоке. Когда вы звоните [tableDataArray count]; Это эквивалент звонка self.tableDataArray в вашем случае, вы должны звонить self_.tableDataArray;.

Для наглядности в качестве примера использования этого заключается в следующем:

... 
@property (nonatomic, strong) NSMutableArray *tableDataArray; 
... 
... 

__block __weak NewsViewController *welf = self; 
[table addInfiniteScrollingWithActionHandler:^{ 
    NSLog(@"%li", welf.tableDataArray.count); 
    [welf callWebService]; 
}]; 

Да welf означает слабую себя.

Смежные вопросы