2015-10-20 48 views
0

我想用我的指定初始值设定项初始化一个类,以避免在不初始化所有实例变量的情况下使用该对象。出于某种原因,我不能将init()方法标记为Swift 2中的私有方法。我在swift 1.2中将init()标记为private。它在Swift 2.0中被删除了吗?无论如何要将init()标记为私有!?如何将超级类初始值设定项标记为swift私有?

+1

您可以使用内部,比这将是你的子类可见。 – dirtydanee

+0

@dirtydanee:这不太正确。在Swift中,内部访问使实体可以在其定义模块的任何源文件中使用。 –

+1

一个具体的例子会很有帮助。 Swift编译器不允许在不初始化所有实例变量的情况下创建对象。 –

回答

1

也许你应该尝试这种模式:

class PrivateInitObject: NSObject { 

var text: String!  

internal init(withText text: String){  
    super.init() 

    self.text = text 

    } 
} 

之后,你可以看到有没有公开的init()

class someClass { 

    let obj = PrivateInitObject(withText: "some text") 
    let obj2 = PrivateInitObject() // compile error, init() is private 
} 
+0

重新阅读该问题,然后重新阅读下面的注释... –

+0

我们可以使用'@ available'属性使其对用户不可用。但我认为这不是最好的方式。 – guru

相关问题