我有一个类,其中形成了一个NSMutableArray对象,如下所示:
navBarColour = [[NSMutableArray alloc] initWithObjects:colourOfNavBar, nil];
然后我有另一个类,它正确地添加了第一个类,但它不允许我从第一个类访问NSMutableArray。这行代码:
NSLog(@"%@", [HandlingPalettes.navBarColour objectAtIndex:0]);
返回:
预期':'之前'。'令牌
可是:
NSLog(@"%@", [navBarColour objectAtIndex:0]);
可以在原班上学。
我在这里做错了什么?
答案 0 :(得分:3)
点符号在c ++或java的目标c中的使用方式不同。在objective-c中,它是访问属性的简写。您需要首先定义一个objective-c属性,如下所示:
<。>在.h文件中(INSIDE接口标记)@property (nonatomic, retain) NSMutableArray *navBarColor;
<。>在.m文件中(在实现标记内)
@synthesize navBarColor;
只有这样才能使用点符号访问数组。
答案 1 :(得分:1)
(实际上,futureelite7&amp; Radek S并不严格正确,因为你不需要@property
声明来使用点表示法。如果有一个名为navBarColour
的getter方法,那么点符号也适用于此。但这是另一个问题。)
包含navBarColour
的代码必须显示属性NSLog
的声明。是的,请发布您的头文件,如果您说添加的@property
声明也无法编译,那么您有一些奇怪的事情发生。确保你的另一个类'.m包含那个标题,并且HandlingPalettes
的类不仅仅用前向声明声明(@class Blah;
)声明。
但是,HandlingPalettes
是一个类还是一个实例?!?按照惯例以国会大厦字母开头的标识符暗示它是一个类名,所以这是可疑的。如果它是一个类名,那肯定不是你想要的。
(关于使用不带@property
的点表示法,如果HandlingPalettes
确实是一个类,那么如果你有类方法+(NSMutableArray*)navBarColour
那么它将编译。)
答案 2 :(得分:0)
您必须将property添加到包含该数组的对象并合成它:
@property(nonatomic, retain) NSMutableArray *navBarColour;
此外,将编译器更改为Clang,如果您愿意,错误消息将更加清晰。