在Apple的The Objective-C Programming Language: Defining a Class中,名为“重新定义自我”的部分建议该类方法分配和返回实例仅使用“self”分配实例,然后仅引用该实例。因此,我有一个号码的子类中,具有沿着线类方法:如何正确地重新定义自己,同时避免“多个方法命名...”警告?
+ (id)scrollViewWithFrame: (NSRect)rectFrame
{
id newInstance = [[[self alloc] initWithFrame:rectFrame] autorelease];
[newInstance setHasHorizontalScroller: YES];
[newInstance setHasVerticalScroller: YES];
[newInstance setBorderType: NSNoBorder];
[newInstance setAutoresizingMask: (NSViewWidthSizable
| NSViewHeightSizable)];
return newInstance;
}
上面是,当然,一个NSScrollView的子类。不幸的是,在Xcode 3.x中,所有这些NSView子类现在都会引发警告:“警告:找到名为'-setAutoresizingMask'的多个方法”。我相信这与使用Xcode默认设置的GCC 4.2有关。
当然,警告是正确的,因为NSView及其各个子类都实现setAutoresizingMask,但它也是不必要的。由于它们只是警告,所以我忽略它们,但在三十个或多个不必要的警告之间存在着一个非常有用的警告,我根本看不到。那么该怎么办?我确实想要遵守良好的编码习惯,并且我想构建无警告的应用程序 - 我怎样才能做到这一点?
你已经实现了setAutoresizingMask:使用与NSView.h中声明的不同的参数和/或返回类型。 – codewarrior 2010-03-26 23:09:22
不是。这会引发'为...设置冲突类型'警告。 – 2010-03-27 08:28:15