2015-07-10 18 views
29

Trong Objective-C tôi có thể làm điều nàyNgừng sử dụng và các thuộc tính khác của phương thức trong Swift, làm cách nào?

- (id)init __attribute__((unavailable("init is unavailable, use initWithFrame"))); 

để cảnh báo người dùng rằng không nên sử dụng phương pháp đó để khởi tạo của một lớp và tôi có thể thêm __attribute khác này không chấp một phương pháp

+(void)shareWithParams:(NSDictionary *)params 
__attribute((deprecated("use shareWithPars: instead"))); 

Is có thể làm điều gì đó như thế trong Swift?

Trả lời

54

Swift có thuộc tính available mà bạn có thể sử dụng cho việc này. Đó là lập luận có sẵn bao gồm

  • giới thiệu
  • phản
  • lỗi thời
  • nhắn
  • đổi tên.

Hoặc cho ví dụ bạn đưa ra:

@available(*, unavailable, message: "init is unavailable, use initWithFrame") 
init() { 

} 

@available(*, deprecated, message: "use shareWithPars: instead") 
class func shareWithParams(params: NSDictionary) { 

} 

Để biết thêm thông tin về những thuộc tính này, hãy kiểm tra mục Thuộc tính tại The Swift Programming Language. (hiện tại trang 627)

+0

Liên kết với các phiên bản HTML của Ngôn ngữ lập trình Swift: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Attributes.html – Klaas

+1

Thật không may, '@ có sẵn' không thêm bất kỳ thứ gì vào tiêu đề Obj-C được tạo cho mã Swift được sử dụng bởi Obj-C. Có cách nào để có được phương pháp Swift đánh dấu '__attribute __ ((không có()))' để obj-c? '@ nonobjc' không phải lúc nào cũng hoạt động, mục tiêu là đánh dấu các phương thức kế thừa không có sẵn. –

7

Đối với Swift 3 và Swift 4, thay vì sử dụng dấu hiệu = để đặt tin nhắn, bạn phải sử dụng dấu hiệu :. Ví dụ:

@available(*, deprecated, message: "Use EndPointModel class instead") 
class BaseModel { 

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