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

时间:2012-11-27 19:46:07

标签: ios ios5 nsmutablearray

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

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

任何建议都非常感谢!

1 个答案:

答案 0 :(得分: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