这里有什么问题?
- (NSString *)description
{
return self.name;
}
编译器给我一个错误“在类型对象上找不到属性名称......”
答案 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