Có (rất có thể) không có lý do chính đáng để không muốn kế thừa từ NSObject, nhưng có nhiều lý do chính đáng để làm như vậy.
Tôi sẽ tò mò về lý do tại sao bạn không muốn kế thừa từ NSObject. Tôi đoán nó bắt nguồn từ sự thiếu hiểu biết hơn là một nhu cầu thực sự.
Nhưng ngay cả khi không biết lý do đó: Đừng làm điều đó. Thật khó để làm tốt điều này theo cách mà nó vẫn chơi tốt với các lớp Objective-C khác hầu như không thể.
Dù sao, bạn đang khởi tạo các đối tượng theo cách ẩn nội dung thực sự.Trong thời gian ở Java, bạn thường tạo ra các trường hợp thông qua phương thức constructor mặc định new
, trong Objective-C bạn nhanh chóng bằng cách gọi alloc
trên lớp và sau đó init
trên dụ:
Person *aPerson = [[Person alloc] init];
(Đó là thể để chỉ cần sử dụng Person new
, nhưng tôi sẽ không làm điều đó bởi vì nó ẩn những gì thực sự được thực hiện từ bạn)
Bạn thực hiện lớp học của bạn sao cho bạn kế thừa từ NSObject và sau đó, nếu cần, hãy viết phương pháp init
của riêng bạn.
Nếu bạn muốn đăng nhập vào giao diện điều khiển, sử dụng NSLog
:
NSLog(@"Hello %@", @"Steven");
(@""
là một nhà xây dựng đặc biệt cho một NSString Strings trong Objective-C không phải là mảng byte, nhưng các đối tượng..)
Có gì sai với 'Người' kế thừa từ 'NSObject'? – Costique
+1 vì đây là một câu hỏi rất thú vị, mặc dù giá trị thực tế có thể rất ít. – vikingosegundo
@Costique: Không có gì, chỉ có rất nhiều hướng dẫn tôi tìm thấy trên web đã không đề cập đến rằng đó là một yêu cầu (nghĩa là kế thừa từ NSObject). Ví dụ: http://en.wikibooks.org/wiki/Objective-C_Programming/syntax Đã thử kế thừa từ Object, nhưng '[Person new]' không hoạt động quá – Hao