iOS-实例数组不包含数据
由于某些原因,我无法让twitterAccounts保存另一个数组数据 ViewController.hiOS-实例数组不包含数据,ios,objective-c,nsarray,Ios,Objective C,Nsarray,由于某些原因,我无法让twitterAccounts保存另一个数组数据 ViewController.h @interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> @property (strong, nonatomic) NSArray *twitterAccounts; @property (strong, nonatomic) IBOutlet UITab
@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
@property (strong, nonatomic) NSArray *twitterAccounts;
@property (strong, nonatomic) IBOutlet UITableView *chooseTwitterAccountTableView;
- (void)twitterRequest;
@end
我不明白的是,如果我的viewDidLoad方法是这样的:
- (void)viewDidLoad
{
[super viewDidLoad];
_twitterAccounts = [[NSArray alloc]init];
[self twitterRequest];
NSLog(@"After method called: %lu", [_twitterAccounts count]);
}
输出为:
After method called 0.
Array first has: 1 elements.
因为我在输出数组中的元素数量之前调用该方法,所以不应该是另一种方式吗?
requestAccessToAccountsWithType:
是一种异步方法,这意味着
仅启动请求并返回。完成区块
稍后在请求完成时调用
所以打了电话以后,
[self twitterRequest];
\u twitterAccounts
数组尚未分配给。当请求完成时
完成块被称为,\u twitterAccounts=twitterAccountsTemp代码>被执行,
如果需要,您可以在此时更新UI。您注意到,requestAccessToAccountsWithType
是一种异步方法吗顺便问一下,它是\u账户
还是\u推特账户
?请复制/粘贴您的真实代码。您正在分配给\u帐户
,但正在记录\u twitter帐户
。。。那么,这是哪一个呢?还要看看是不是同意;)为什么要在viewDidLoad中创建空数组?根据定义,空NSArray不包含任何数据(并且永远不能包含任何数据)。你对指针和对象有一个基本的误解。有没有办法让twitterAccounts保存twitterAccountsTemp的数据?@user3000730:在NSArray*twitterAccountsTemp=…
设置断点。您将看到,稍后将调用完成。异步方法就是这样工作的,没有办法。好的,谢谢,我的目标是获取数组中的元素数并创建一个表视图。因此,我需要twitterAccounts数组来保存它。@user3000730:您可以从完成块内更新表视图(但在主线程上,请参见类似问题)。
[self twitterRequest];