代码之家  ›  专栏  ›  技术社区  ›  Elise van Looij

如何正确地重新定义自我,同时避免“多个方法命名…”警告?

  •  1
  • Elise van Looij  · 技术社区  · 15 年前

    The Objective-C Programming Language: Defining a Class “重新定义self”一节建议类方法allocate和return实例只使用“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;
    }
    

    1 回复  |  直到 15 年前
        1
  •  3
  •   Chuck    15 年前

    关于“找到多个方法”的警告意味着不止一个类实现了 setAutoresizingMask: 编译器无法判断这是哪一个,因为变量是类型化的 id newInstance 或者作为一个 NSScrollView* 否则你的课和警告就会消失。你还可以回来 身份证件 ,因为它等价于所有对象指针类型。它只是编译器想要静态类型化的要向其发送消息的变量。