2014-09-18 3 views
-3

Пожалуйста, обратите внимание на этот кусок кода Objective-C:Как написать такой инициализатор в Swift?

- (instancetype)initWithNothing 
{ 
    self = [super init]; 

    if (self) 
    { 
     // do something that i wish 
     // to do only here 
     // not in usual init method 
    } 

    return self; 
} 

Я использую этот метод, если я не хочу использовать обычный init метод. На самом деле это еще один init, который не принимает никаких параметров. Как написать такой инициализатор в Swift?

+0

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ Initialization.html? – Larme

+4

Тривиальный код перевода вопрос. – Sulthan

+0

@ AndreyChernukha Вопросы перевода кода не в тему. Что вы пробовали? Где твоя проблема? – Sulthan

ответ

1

Вы не можете.

В Swift инициализаторы не являются нормальными функциями. Они объявляются с помощью ключевого слова init и вызываются с использованием имени класса (или путем вызова переменной, содержащей класс). Они не объявляются с использованием ключевого слова func и не имеют имени, которое отображается на этом языке.

Вместо этого, написать инициализатор, который принимает фиктивный аргумент, чтобы отличить его от нормального инициализатора:

class MyObject: NSObject { 

    init(nothing: AnyObject?) { 
     super.init() 
     // whatever 
    } 

    class func test() { 
     let object = MyObject(nothing: nil) 
    } 

} 
0

Попробуйте это:

class func createInstanceWithNothing() -> Self{ 
    return Self() 
} 

где Само это имя вашего класса и Я() является одной из функций инициализации

Смежные вопросы