Tôi đang sử dụng một khuôn khổ xác định và sử dụng 'ClassA', một phân lớp của NSObject. Tôi muốn thêm một số biến và chức năng vì vậy tự nhiên tôi đã tạo 'ClassB', một lớp con của 'ClassA'Làm thế nào để bỏ 'Lớp A' vào phân lớp 'Lớp B' - Mục tiêu-C
Bây giờ vấn đề của tôi là vấn đề này. Nhiều phương thức trong khuôn khổ này trả về các cá thể của 'ClassA' mà tôi muốn chuyển sang lớp con của tôi.
Ví dụ lấy phương pháp này:
- (ClassA *)doSomethingCool:(int)howCool
Bây giờ trong mã của tôi, tôi cố gắng này:
ClassB * objB;
objB = (ClassB *)doSomethingCool(10);
NSLog(@"objB className = %@", [objB className]);
này chỉ chạy tốt. Không có lỗi biên dịch hoặc thời gian chạy hoặc bất kỳ điều gì. Nhưng điều thực sự lạ với tôi là đầu ra:
>> "objB className = ClassA"
Việc truyền hiển nhiên không thành công. Không chắc chắn những gì đã xảy ra vào thời điểm này ... objB được đánh máy là 'ClassB', nhưng className là 'ClassA' và nó sẽ không trả lời bất kỳ phương thức 'ClassB' nào.
Không chắc chắn về điều này có thể xảy ra ... Bất kỳ ai biết tôi đang làm gì sai ở đây?
Tôi tìm thấy một bài tương tự đó là hoàn toàn ngược lại những gì tôi đang hỏi here
Bạn có thể cho biết cách bạn đã tạo ClassB trong doSomethingCOol không? – stefanB