В Apple Язык программирования Objective-C: определение класса раздел с именем «Переопределение себя» рекомендует, чтобы методы класса выделяли и возвращали экземпляры, используя «себя» только для выделения экземпляра, а затем только ссылки в этом случае. Таким образом, у меня есть несколько подклассов, у которых есть методы класса по типу:
+ (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». Я считаю, что это как-то связано с GCC 4.2, который использует настройки по умолчанию Xcode.
Предупреждение, конечно, верно, поскольку NSView и его различные подклассы реализуют setAutoresizingMask, но это также не нужно. Поскольку это всего лишь предупреждения, я их игнорирую, но есть риск, что между тридцатью или около того ненужными из них будет действительно полезное предупреждение, которого я просто не вижу. Так что делать? Я хочу придерживаться хороших методов кодирования и хочу создавать приложения без предупреждений - как я могу сделать то и другое?