以下代码编译得很好 - 但它有什么问题吗?
我找不到任何会阻止我们对属性和方法名称使用相同标识符的Objective-C指南:
@interface MouseCursorHelper : NSObject
@property (nonatomic, readwrite, retain) NSCursor* rotateCursor;
+ (NSCursor*) rotateCursor;
@end
FWIW,该类被实现为在NSCursor
之后建模的单例,以提供特定于应用的游标。
答案 0 :(得分:5)
这可能有点令人困惑。
该属性为您生成2个实例方法:
- (NSCursor *)rotateCursor;
- (void)setRotateCursor:(NSCursor *)rotateCursor;
你还有一个类方法:
+ (NSCursor *)rotateCursor;
从用户的角度来看,不清楚类方法的作用。文档会有所帮助。
答案 1 :(得分:2)
你在做什么完全没有问题。您所做的就是说类对象和类的实例都响应rotateCursor
。这与响应intValue的NSString和响应intValue的NSNumber实例的实例在概念上并不完全不同。它们只是不同类型的对象。
事实上,你会发现Apple的几个实例在Cocoa框架中做同样的事情,例如。
[NSString class]; // Sending class to the class
[@"foo" class]; // Sending class to an instance of the class.