Ios 从NSObject调用DBRestClient时不工作
我对IOS还比较陌生,现在正在做一个大项目,需要从dropbox和googleDrive等存储渠道访问文件 我设法访问了dropbox文件并对其进行了操作,但问题是,如果视图类(Ios 从NSObject调用DBRestClient时不工作,ios,objective-c,dropbox,Ios,Objective C,Dropbox,我对IOS还比较陌生,现在正在做一个大项目,需要从dropbox和googleDrive等存储渠道访问文件 我设法访问了dropbox文件并对其进行了操作,但问题是,如果视图类(UITableView,在我的例子中)不是MVC,那么如果没有DBRestClient属性,我就无法做到这一点 当我尝试在另一个类上使用它时,比如说实现DBRestClientDelegate的NSObject,什么都没有发生 我知道这个问题以前已经发布过,有人说,NSObject需要有一个对它的强引用,这样它就不会被释
UITableView
,在我的例子中)不是MVC,那么如果没有DBRestClient属性,我就无法做到这一点
当我尝试在另一个类上使用它时,比如说实现DBRestClientDelegate的NSObject
,什么都没有发生
我知道这个问题以前已经发布过,有人说,NSObject
需要有一个对它的强引用,这样它就不会被释放,但我只是这样做了,仍然没有发生任何事情
以下是我的一些代码:
NSObject
类DropboxServices
@interface DropboxServices : NSObject <DBRestClientDelegate>
@property (nonatomic, readonly) DBRestClient *restClient;
@implementation DropboxServices
@synthesize restClient=_restClient;
- (DBRestClient *)restClient {
if (!_restClient) {
if ( [[DBSession sharedSession].userIds count] ) {
_restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
_restClient.delegate = self;
}
}
return _restClient;
}
- (void)restClient:(DBRestClient *)client loadedMetadata:(DBMetadata *)metadata {
NSLog(@"method called!!!!!!!!!!!!!!!!!!!");
}
但当我尝试加载元数据时:
[[self.dropboxFolderItemsTableView.dropboxServices restClient] loadMetadata:@"/"];
什么也没发生。在几乎两周没有反应后,我尝试了一种完全不同的方法。 我在这篇文章中发现了一个有趣的事实,即我的每个UITableView的代理控制器不必是显示它的视图控制器 因此,我可以将DBRestClient放在一个新创建的viewController(在我的例子中是一个tableViewController)中,并从实际包含表视图的视图控制器中对其进行强引用,然后分配实际的dropbox tableView(dropboxFolderItemsTableView)作为新创建的viewController的表视图
self.dropboxFolderItemsTableViewController=[[DropboxFolderItemsTableViewController alloc]init];
self.dropboxFolderItemsTableViewController.tableView=self.dropboxFolderItemsTableView;
虽然我不认为这个解决方案能很好地解决MVC的问题,但我面临着和你们一样的问题。我将寻找一个更合适的解决方案。
self.dropboxFolderItemsTableViewController=[[DropboxFolderItemsTableViewController alloc]init];
self.dropboxFolderItemsTableViewController.tableView=self.dropboxFolderItemsTableView;