我的UITableView重新加载时调用了以下方法:
-(NSArray *)theAccounts {
if (__theAccounts != nil) {
return __theAccounts;
}
// Create an account store object.
ACAccountStore *accountStore = [[ACAccountStore alloc] init];
// Create an account type that ensures Twitter accounts are retrieved.
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];
// Request access from the user to use their Twitter accounts.
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
if(granted) {
// Get the list of Twitter accounts.
NSArray *accountsArray = [[NSArray alloc] initWithArray:[accountStore accountsWithAccountType:accountType]];
self.theAccounts = accountsArray;
}
}];
return __theAccounts;
}
.h中的Setter方法:
@property (strong, nonatomic) NSArray *theAccounts;
和.m:
@synthesize theAccounts = __theAccounts;
我希望能够有效地清空自己。帐户和重新加载。所以我创建了一个resync方法,但在重新加载表后它永远不会返回任何值:
-(void)resyncAccounts {
self.theAccounts = nil;
[self.tableView reloadData];
}
我在iOS 5 SDK上使用ARC。这可能是个问题吗?我之前用fetchedResultsController完成了类似的操作并且没有问题,但那不是ARC。值得注意的是它确实在第一次调用时返回数据,并在此之后返回__TheAccounts,直到我尝试 - (void)resyncAccounts {}。
答案 0 :(得分:1)
为什么不在完成处理程序中设置“theAccounts”后重新加载tableView?另外,在将它设置为nil之后,你不应该把它称为“self.theAccounts”吗?
答案 1 :(得分:0)
,你第一次返回nil,因为块还没有执行