2015-02-08 18 views
5

Có bất kỳ hạn chế nào trong việc nhanh chóng sử dụng giá trị thuộc tính mặc định thay vì đặt giá trị đó trong trình khởi tạo không?Swift: Thuộc tính mặc định so với cài đặt trong initializer

ví dụ

class Foo: UIViewController { 
    let value = UIRefreshControl() 
} 

vs

class Bar: UIViewController { 
    var value : UIRefreshControl! 

    // or using init() 
    override func viewDidLoad() { 
     self.value = UIRefreshControl() 
    } 
} 

giá trị tài sản mặc định có vẻ ngắn gọn hơn và thanh lịch, nhưng tôi không nhìn thấy chúng được sử dụng trong ví dụ mã nơi họ có thể được sử dụng.

Trả lời

2

Nhược điểm duy nhất là giá trị thuộc tính mặc định được đặt mỗi khi một cá thể của đối tượng được tạo, ngay cả khi thuộc tính sau đó được ghi đè trong một hoặc nhiều trình khởi tạo. Điều này có lẽ không phải là một vấn đề nếu bạn chỉ gán các giá trị số mặc định, nhưng nếu có một lớp đắt tiền để xây dựng, bạn có thể sẽ phải làm gấp đôi công việc.

+0

Ah, nhưng về mặt lý thuyết nếu đó là hằng số với 'let' thì điều này sẽ không phải là mối quan tâm đúng không? Mặc dù tất nhiên 'let' với một giá trị mặc định sẽ làm cho lớp ít mở rộng hơn ... –

+1

Bạn thực sự có thể gán lại các thuộc tính' let' được khai báo bên trong một bộ khởi tạo. Lạ nhưng có thật! –

+1

Ngoài ra, chỉ muốn thêm rằng tôi nghĩ rằng giá trị tài sản mặc định là tuyệt vời và tôi sử dụng chúng bất cứ nơi nào có thể. Câu trả lời là nhược điểm duy nhất - có những lý do tích cực khiến chúng đáng giá trong hầu hết các trường hợp. –

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