gpt4 book ai didi

ios - 如何在 Objective-C 中使用局部变量作为 tableView 的数据源

转载 作者:行者123 更新时间:2023-11-28 20:07:03 25 4
gpt4 key购买 nike

我有一个 UITableViewController :

#import <UIKit/UIKit.h>
#import "MainClass.h"
@interface MainViewController : UITableViewController
@property (strong, nonatomic) MainClass *mainClass;
@end

还有一个我想用作 TableView 数据源的类:

@interface Domain : NSObject <UITableViewDataSource>

-(id) initWithName: (NSString*)name;

@property (nonatomic, retain) NSString* name;
@property (nonatomic, retain) NSMutableArray* list;

@end

当我想简单地测试它是否正常工作时,我创建了一个本地域并在其中添加了一些文档:

Domain* domain = [[Domain alloc] init];
Document* document1 = [[Document alloc]initWithName:@"test1"];
[domain.list addObject:document1];

然后我将域声明为数据源(我覆盖了两个必需的方法):

self.tableView.dataSource = domain;

不幸的是,这会导致 Bad access 异常。我猜是因为局部变量释放得太早了。我猜这是因为当我将域和文档都声明为属性时,它工作得很好。谁能解释一下过早发布的原因以及如何避免?

最佳答案

'dataSource' 是一个弱属性,因此您必须保留对该对象的另一个引用以使其不被释放。

因此在 View Controller 上定义一个属性确实是最好的解决方案。

关于ios - 如何在 Objective-C 中使用局部变量作为 tableView 的数据源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com