描述方法有误

时间:2011-10-18 11:03:39

标签: objective-c xcode cocoa

这里有什么问题?

- (NSString *)description
{
    return self.name;    
}

编译器给我一个错误“在类型对象上找不到属性名称......”

4 个答案:

答案 0 :(得分:3)

由于-description是一个实例方法,self指向实现该方法的任何类的当前实例。因此,self.name等同于[self name],需要一个名为-name的实例方法,可能是名为name的已声明属性的getter方法。例如:

@interface SomeClass : NSObject
@property (copy) NSString *name;
@end

@implementation SomeClass
@synthesize name;
- (NSString *)description {
    return self.name;
}
@end

另一方面,如果要在-description

中返回相应的类名
- (NSString *)description {
    return NSStringFromClass([self class]);
}

答案 1 :(得分:2)

你想要班级名,嗯?

然后将代码更改为

-(NSString *)description
{
    NSString *className = NSStringFromClass([myObject class]); 
    return(className);
}

答案 2 :(得分:1)

似乎你没有将'name'声明为NSString属性和/或没有合成它。

---编辑----

请按照迈克尔的建议尝试!在你的情况下它应该是 -

- (NSString *)description
{
   return NSStringFromClass([self class]);
}

答案 3 :(得分:0)

要获取班级名称,您需要覆盖说明方法。如果你真的需要描述方法中的类名,那么:

return [NSString stringWithCString:class_className([self class]);

你需要

#import <objc/runtime.h>

有关详细信息,请参阅Objective C Runtime Reference