2015-04-09 11 views

Trả lời

11

Apple đã thêm hai chú thích kiểu mới: __nullable và __nonnull. Con trỏ __nullable có thể có giá trị NULL hoặc nil, trong khi một __nonnull không nên có.

Như bạn nên biết trong nhanh chóng, bạn có thể sử dụng tùy chọn (?) Nhưng trong Mục tiêu-C bạn không thể. Những thuộc tính cho phép bạn tạo mã C Mục tiêu đó là dễ hiểu hơn bằng cách nhanh chóng và biên dịch cảnh báo bạn khi bạn phá vỡ các quy tắc, ví dụ:

@property (copy, nullable) NSString *name; 
@property (copy, nonnull) NSArray *allItems; 

này sẽ được 'dịch' trong nhanh chóng với:

var name: String? 
var allItems: [AnyObject]! 

Điều này được lấy từ NSHipster:

không rỗng: Cho biết con trỏ nên/sẽ không bao giờ là không. Các con trỏ được chú thích với nonnull được nhập vào Swift làm giá trị cơ bản không bắt buộc (tức là NSData).

vô hiệu hóa: Cho biết con trỏ có thể là số không trong thực tiễn chung. Nhập vào Swift dưới dạng giá trị tùy chọn (NSURL?).

null_unspecified: Tiếp tục chức năng hiện tại của nhập vào Swift dưới dạng tùy chọn ẩn hoàn toàn, lý tưởng là chỉ sử dụng trong quá trình chú thích này.

null_resettable: Cho biết rằng mặc dù thuộc tính sẽ luôn có giá trị, nhưng có thể là đặt lại bằng cách gán nil. Các thuộc tính có giá trị mặc định không phải làđược chú thích theo cách này, như tintColor. Nhập vào Swift dưới dạng (tương đối an toàn) hoàn toàn không được tùy chọn. Tài liệu phù hợp!

+0

Vì vậy, về cơ bản; những thuộc tính này chỉ được sử dụng trong ngữ cảnh với Swift phải không? –

+2

Chủ yếu là có, nhưng bạn sẽ nhận được cảnh báo trình biên dịch nếu bạn cố gắng gán null cho thuộc tính được đánh dấu là nonnull trong Objective-C. – Greg

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