我在头文件中定义了一些属性,如此
@property (assign) bool connectivity_N;
@property (assign) bool isConnected_N;
在我的实现文件中,我有一个init和合成属性,如此
@implementation Map
@synthesize connectivity_N;
@synthesize isConnected_N;
一个init来设置像这样的初始值
-(id) init
{
if( (self=[super init]) )
{
//initialise default properties
self.connectivity_N=NO;
self.isConnected_N=NO;
}
return self;
}
我遇到了一个错误,指出错误:访问未知的'connectivity_N'类方法。在这个类中的公共方法
+(bool) isConnectable:(directions) theDirection{
bool isTheDirectionConnectable= NO;
switch (theDirection) {
case north:
isTheDirectionConnectable= self.connectivity_N;
break;
我不知道为什么会这样,因为我正试图抓住财产的价值。根据apple开发者文档“与属性关联的getter和setter方法的默认名称分别是propertyName和setPropertyName: - 例如,给定属性”foo“,访问器将是foo和setFoo:”
这给了我一个线索,我在这里做错了什么,我对客观C很新,所以我很感激任何花时间向我解释的人。
谢谢!
答案 0 :(得分:3)
您已将isConnectable:
定义为类方法,前缀为+
。可能你希望它是一个实例方法 - 改为用减号-
启动它。
您无法在类方法中访问 self
,因为没有对象实例。
虽然类方法中存在self
,但它不引用对象实例 - 没有对象 - 因此您无法访问对象属性。 (感谢Dave DeLong的纠正。)