gpt4 book ai didi

ios - 不明白如何在动态填充列表时正确使用数组

转载 作者:行者123 更新时间:2023-12-01 19:15:37 25 4
gpt4 key购买 nike

我试图弄清楚如何创建一个填充 UITableView 的字符串列表,并确保每个单元格都有适当的大小以适合每个字符串(某些字符串可能会变得很长)

我想要做的是声明一个 tempArray 以在我填充数组时保存项目列表。

在我的 .h 文件中,我这样声明:

@interface BusinessTopicController : UIViewController <UITableViewDataSource, UITableViewDelegate>
....

@end

NSMutableArray *newArray;

但是当我尝试这样做时,在 .m 文件中:
@implementation BusinessTopicController
@synthesize newArray;

我收到此语法错误:

属性实现必须在@interface 中声明

但是当我将它添加到@interface
@property (nonatomic, retain) NSMutableArray *newArray;

然后它在@synthesize newArray 上给了我一个不同的错误;这条线是:
Property's synthesized getter follows cocoa naming convention for returning 'owned' objects

我用谷歌搜索了这个问题,解决方案似乎有点矫枉过正,因为在我看来,我只是在某个地方犯了一些愚蠢的错误。

任何建议都非常感谢!

最佳答案

由于您的属性以 new 开头,因此会生成“属性的合成 getter 遵循 cocoa 命名约定...”编译器错误。这意味着合成的 getter 方法以 new 开头, 这是为返回 +1 保留对象的方法保留的。因此,请尝试为该属性找到另一个名称。

使用最新版本的 Xcode 和 clang 编译器,您只需要一个 @property接口(interface)中的声明。您甚至可以跳过 @synthesize并且会为您合成一个带下划线前缀的 ivar。删除NSMutableArray *newArray;完全是因为它位于接口(interface)之外,本质上是一个全局变量。

如果您想保持属性私有(private),您还可以在 .m 文件中的匿名类别/类扩展名中声明它,如下所示:

// At the top of BusinessTopicController.m
@interface BusinessTopicController ()

@property (nonatomic, retain) NSMutableArray *theArray;

@end

关于ios - 不明白如何在动态填充列表时正确使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13591843/

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