Tôi chọn ObjC và Cocoa, đây cũng là bước đột phá nghiêm trọng đầu tiên của tôi vào lập trình nói chung.InitWith Methods vs. Method Methods
Tôi đang gặp sự cố với sự khác biệt giữa các phương thức initWith, được gọi trên trường hợp và phương thức nhà máy, được gọi trên lớp.
Thứ nhất, tại sao chúng được gọi là phương pháp "nhà máy" và có thuật ngữ thích hợp cho những gì tôi đã gọi là phương thức "InitWith" không?
Thứ hai, sự khác biệt chức năng là gì? Nó chỉ là các hàm ý quản lý bộ nhớ (các phương thức factory trả về một đối tượng autoreleased)?
Ví dụ: sự khác biệt thực sự giữa [NSString stringWithString: (NSString*)aString]
và [[NSString alloc] initWithString: (NSString*)aString]
là gì?
Điều này xảy ra với cả hai bạn, Ruglud và Audacitor: Bạn không cần phải bao gồm '(NSString *)' khi gửi thông điệp 'initWithString:'. Chỉ khai báo của phương thức cần nó (để chỉ định kiểu phương thức mong đợi). Khi bạn đưa nó vào như một phần của một thông điệp, bạn đang truyền giá trị 'aString' tới' NSString * '.Nếu 'aString' là' NSString * ', thì điều này không có gì và không cần thiết; nếu nó là cái gì khác, sau đó các diễn viên sẽ vẫn không làm gì hữu ích: Nó sẽ đóng cửa trình biên dịch, nhưng bạn sẽ sụp đổ tại thời gian chạy. –