2014-10-25 16 views
8

Tôi muốn tạo ra một phong tục CGPoint lớp con thêm một số proprieties, nhưng tôi nhận được lỗi này:thừa kế từ phi giao thức, loại phi lớp 'CGPoint'

Inheritance from non-protocol, non-class type 'CGPoint'

Tôi không có ý tưởng tại sao điều này không phải là khả thi. Lớp học của tôi đơn giản như thế này:

import UIKit 

class IYAttachPoint: CGPoint { 

    var holder: String = "No holder" 
    var unavailable: Bool = false 

} 

Tôi đã thử thêm một số thư viện như CoreGraphics hoặc QuartzCore mà không thành công. Nếu đã có một số câu hỏi hoặc giải pháp cho vấn đề này, hãy chỉ cho tôi đi đúng hướng.

Trả lời

11

Điều này là không thể vì bạn muốn kế thừa một class từ struct. CGPointstruct và chúng không hỗ trợ kế thừa trừ khi tuân thủ protocols.

Nếu bạn muốn thực hiện điều này thực sự sử dụng composition thay vì inheritance.

class IYAttachPoint { 

    var point:CGPoint? 
    var holder: String = "No holder" 
    var unavailable: Bool = false 
} 
+0

Cảm ơn bạn rất nhiều, điều này sẽ giúp tôi hiểu :) –

0

Thông báo lỗi bạn đang nhận được cho bạn biết chính xác những gì là sai. Những điều duy nhất có thể được sử dụng làm lớp cơ sở là, tốt, các lớp học. Bạn cũng có thể có lớp/struct/enum của bạn phù hợp với một giao thức nhưng chỉ có các lớp có thể được sử dụng để thừa kế. Vì CGPoint là một cấu trúc nên nó không thể được sử dụng cho các mục đích phân lớp.

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