2016-05-17 28 views
8

Tôi muốn bỏ mặc cha của init method.I có thể đạt được điều này một cách dễ dàng với fatalError trong Swift:Có tương đương Objective-C với hàm tử vong của Swift không?

class subClass:NSObject{ 
    private var k:String! 

    override init(){ 
    fatalError("init() has not been implemented") 
    } 

    init(kk:String){ 
    k = kk 
    } 
}  

Làm thế nào tôi có thể làm điều đó trong Objective-C?

Trả lời

17

Bạn có thể tăng ngoại lệ trong trường hợp này:

Điều gì đó tương tự. Hãy tham khảo này

[NSException raise:@"InitNotImplemented" format:@"Subclasses must implement a valid init method"]; 

Hoặc bạn thậm chí có thể sử dụng câu khẳng định.

NSAssert(NO, @"Subclasses must implement init"); 
0

Chỉ cần gọi doesNotRecognizeSelector: phương pháp NSObject 's. Bạn sẽ viết:

- (instancetype) init 
{ 
    [self doesNotRecognizeSelector:_cmd]; 
} 

là thông số ẩn cho mọi phương thức có giá trị là bộ chọn của phương thức.

2

NSAssert(NO, @"balabala");

hoặc

- (instancetype)init NS_UNAVAILABLE;

Các vấn đề liên quan