2012-07-13 15 views
5

tôi sử dụng đoạn mã sau để có được Xem của tôi ra khỏi điều khiển của tôi:Nhận Chế độ xem của NSViewController nếu đó là lớp tùy chỉnh?

CollectionItemView *myView = [self view]; 

này hoạt động khá tốt, nhưng tôi nhận được cảnh báo Incompatible pointer types initializing CollectionItemView __strong with an expression of type NSView. Tôi hiểu lý do tại sao tôi nhận được điều này nhưng là nó okay để bỏ qua nó hoặc tôi nên ghi đè lên các tài sản xem?

chuck

Trả lời

2

Nếu bạn chắc chắn rằng [self view]CollectionItemView chỉ làm:

CollectionItemView *myView = (CollectionItemView*)[self view]; 

hoặc (mà là tốt hơn), bạn có thể sử dụng:

id myView = [self view]; 
0

Không cần phải ghi đè lên nó. troolee đã đề xuất hai giải pháp làm việc. Tuy nhiên, chỉ để được lưu tôi muốn mã nó một cách khác nhau.

CollectionItemView *myView = nil; 
if ([[self view] isKindOfClass:[CollectionItemView class]) 
    self.view = (CollectionItemView*)[self view]; 

Phiên bản ngắn hơn không có kiểm tra isKindOfClass là ok khi bạn biết chắc chắn rằng ngữ cảnh phải thuộc loại CollectionItemView hoặc bất kỳ lớp con nào của nó.

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