1

我试图弄清楚如何创建一个填充 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

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

任何建议都非常感谢!

4

1 回答 1

3

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

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

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

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

@property (nonatomic, retain) NSMutableArray *theArray;

@end
于 2012-11-27T19:47:32.620 回答