Mẹo C ++ truyền lớp cho hàm tạo
Mẹo Hướng dẫn C ++ truyền lớp cho hàm tạo Chi Tiết
Hoàng Trung Dũng đang tìm kiếm từ khóa C ++ truyền lớp cho hàm tạo được Update vào lúc : 2022-12-22 07:26:04 . Với phương châm chia sẻ Mẹo Hướng dẫn trong nội dung bài viết một cách Chi Tiết Mới Nhất. Nếu sau khi Read tài liệu vẫn ko hiểu thì hoàn toàn có thể lại phản hồi ở cuối bài để Admin lý giải và hướng dẫn lại nha.Lớp được tạo chứa một biến thể hiện và một thuộc tính cho từng thành viên tài liệu Slice. Xem xét định nghĩa lớp sau
Lát cắt
class TimeOfDay short hour; // 0 - 23 short minute; // 0 - 59 short second; // 0 - 59 string format(); // Return time as hh:mm:ssTrình biên dịch Slice tạo mã sau cho định nghĩa này
Mục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @endCó một số trong những điều cần lưu ý về mã được tạo
Lớp được tạo @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 7 bắt nguồn từ @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 8, là lớp cha của tất cả những lớp. Lưu ý rằng @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 8 không in như @protocol ICEObjectQuay lại đầu trang ^
Bắt nguồn từ @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 8 trong Mục tiêu-CTất cả những lớp ở đầu cuối đều xuất phát từ một lớp cơ sở chung,
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 8. Lưu ý rằng điều này rất khác với việc triển khai giao thức @protocol ICEObjectMục tiêu-C
@protocol ICEObjectCác phương thức được phân chia giữa giao thức và lớp
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 8 vì những lớp hoàn toàn có thể là người phục vụCác phương thức của
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 8 hoạt động và sinh hoạt giải trí như sau- @protocol ICEObject
Phương thức này trả về @protocol ICEObject
- @interface EXTimeOfDay : ICEObject
ICEShort hour;
ICEShort minute;
ICEShort second;
@property(nonatomic, assign) ICEShort hour;
@property(nonatomic, assign) ICEShort minute;
@property(nonatomic, assign) ICEShort second;
-(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
+(id) timeOfDay;
+(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
@end
61
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 61 đáp ứng bài kiểm tra kĩ năng tiếp cận cơ bản cho lớp học. Nếu nó hoàn thành xong mà không đưa ra một ngoại lệ, thì lớp tồn tại và hoàn toàn có thể truy cập được. Lưu ý rằng @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 61 thường chỉ được gọi trên proxy cho một lớp hoàn toàn có thể ở xa vì luôn hoàn toàn có thể truy cập được một phiên bản lớp cục bộ (trong không khí địa chỉ của trình gọi).
- @interface EXTimeOfDay : ICEObject
ICEShort hour;
ICEShort minute;
ICEShort second;
@property(nonatomic, assign) ICEShort hour;
@property(nonatomic, assign) ICEShort minute;
@property(nonatomic, assign) ICEShort second;
-(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
+(id) timeOfDay;
+(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
@end
64
Phương thức này trả về một chuỗi chuỗi đại diện cho tất cả những ID loại được đối tượng này tương hỗ, gồm có cả @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 65.
- @interface EXTimeOfDay : ICEObject
ICEShort hour;
ICEShort minute;
ICEShort second;
@property(nonatomic, assign) ICEShort hour;
@property(nonatomic, assign) ICEShort minute;
@property(nonatomic, assign) ICEShort second;
-(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
+(id) timeOfDay;
+(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
@end
66
Phương thức này trả về ID loại thời gian chạy thực tế cho một lớp. Nếu bạn gọi @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 66 thông qua một con trỏ tới một phiên bản cơ sở, ID loại được trả về là ID loại thực tế (hoàn toàn có thể có nguồn gốc hơn) của phiên bản.
- @interface EXTimeOfDay : ICEObject
ICEShort hour;
ICEShort minute;
ICEShort second;
@property(nonatomic, assign) ICEShort hour;
@property(nonatomic, assign) ICEShort minute;
@property(nonatomic, assign) ICEShort second;
-(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
+(id) timeOfDay;
+(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
@end
68
Phương thức này trả về ID loại tĩnh của một lớp.
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 69
Phương thức này gửi yêu cầu đến cho một người hầu. Nó được sử dụng trong quá trình triển khai thiết bị chặn công văn.
- @interface EXTimeOfDay : ICEObject
ICEShort hour;
ICEShort minute;
ICEShort second;
@property(nonatomic, assign) ICEShort hour;
@property(nonatomic, assign) ICEShort minute;
@property(nonatomic, assign) ICEShort second;
-(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
+(id) timeOfDay;
+(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
@end
60
Thời gian chạy băng gọi phương thức này trước khi sắp xếp lại trạng thái của đối tượng, tạo thời cơ cho lớp con xác thực những thành viên tài liệu đã khai báo của nó.
- @interface EXTimeOfDay : ICEObject
ICEShort hour;
ICEShort minute;
ICEShort second;
@property(nonatomic, assign) ICEShort hour;
@property(nonatomic, assign) ICEShort minute;
@property(nonatomic, assign) ICEShort second;
-(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
+(id) timeOfDay;
+(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second;
@end
61
Thời gian chạy băng gọi phương thức này sau khi sắp xếp lại trạng thái của đối tượng. Một lớp con thường ghi đè hiệu suất cao này khi nó cần thực hiện khởi tạo tương hỗ update bằng phương pháp sử dụng những giá trị của những thành viên tài liệu đã khai báo của nó. @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 62
Hàm này trả về đối tượng @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 63 nếu giá trị đã được cắt lát trong quá trình sắp xếp lại hoặc @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 64 nếu không.
Quay lại đầu trang ^
Thành viên tài liệu lớp trong Objective-CTheo mặc định, những thành viên tài liệu của những lớp được ánh xạ đúng chuẩn như đối với cấu trúc và ngoại lệ. đối với mỗi thành viên tài liệu trong định nghĩa Slice, lớp được tạo chứa một thuộc tính tương ứng
Quay lại đầu trang ^
Trình tạo lớp trong Mục tiêu-CCác lớp đáp ứng phương thức
@protocol ICEObject- Một thành viên tài liệu chuỗi được khởi tạo thành một chuỗi rỗngMột thành viên tài liệu điều tra viên được khởi tạo cho điều tra viên đầu tiênThành viên tài liệu cấu trúc được khởi tạo thành giá trị được tạo mặc định
Nếu bạn khai báo những giá trị mặc định trong định nghĩa Slice của tớ, phương thức
@protocol ICEObjectNgoài ra, nếu một lớp có những thành viên tài liệu, nó sẽ đáp ứng một phương thức
@protocol ICEObjectĐối với những lớp dẫn xuất, phương thức
@protocol ICEObjectLát cắt
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 6Điều này tạo ra
Mục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 6Quay lại đầu trang ^
Các lớp dẫn xuất trong Objective-CLưu ý rằng, trong ví dụ trước, dẫn xuất của những định nghĩa Slice được không thay đổi cho những lớp được tạo.
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 69 xuất phát từ @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 8 và @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 91 xuất phát từ @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 69. Điều này được cho phép bạn xử lý và vượt qua những lớp một cách đa hình. bạn luôn hoàn toàn có thể vượt qua một phiên bản @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 91 trong khi một phiên bản @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 69 được mong đợiQuay lại đầu trang ^
Truyền những lớp dưới dạng tham số trong Objective-CCác lớp được truyền bởi con trỏ, in như bất kỳ đối tượng Objective-C nào khác. Ví dụ: đây là một thao tác đồng ý
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 95 làm tham số trong và trả về @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 96Lát cắt
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 9Phương thức proxy tương ứng trông như sau
Mục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 6Để vượt qua một phiên bản null, bạn chỉ việc vượt qua
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 97Quay lại đầu trang ^
Hoạt động của những lớp trong Objective-CNếu bạn nhìn lại mã được tạo cho lớp
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 7, bạn sẽ nhận thấy rằng không còn tín hiệu nào đã cho tất cả chúng ta biết lớp đó có thao tác @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 99. Trái ngược với proxy, những lớp không thực hiện bất kỳ giao thức nào sẽ xác định hoạt động và sinh hoạt giải trí nào khả dụng. Điều này nghĩa là bạn hoàn toàn có thể thực hiện một phần những hoạt động và sinh hoạt giải trí sinh hoạt của một lớp. Ví dụ: bạn hoàn toàn có thể có một lớp Slice với năm thao tác được trả về từ sever cho máy khách. Nếu máy khách chỉ sử dụng một trong năm thao tác, mã phía máy khách chỉ việc triển khai một thao tác đó và hoàn toàn có thể để bốn thao tác còn sót lại không cần triển khai. (Nếu lớp thực hiện một giao thức bắt buộc, mã phía máy khách sẽ phải thực hiện tất cả những hoạt động và sinh hoạt giải trí sinh hoạt để tránh chú ý của trình biên dịch. )Tất nhiên, bạn phải thực hiện những thao tác mà bạn thực sự định gọi. Ánh xạ hoạt động và sinh hoạt giải trí cho những lớp tuân theo ánh xạ phía sever cho hoạt động và sinh hoạt giải trí trên giao diện. nhiều chủng loại tham số và nhãn hoàn toàn giống nhau. (Xem Truyền tham số trong Mục tiêu-C để biết rõ ràng. ) Tóm lại, ánh xạ phía sever in như ánh xạ phía máy khách ngoại trừ đối với nhiều chủng loại có biến thể hoàn toàn có thể thay đổi và không thể thay đổi, chúng ánh xạ tới biến thể không thể thay đổi trong đó ánh xạ phía máy khách sử dụng biến thể hoàn toàn có thể thay đổi và ngược lại
Ví dụ: đây là cách chúng tôi hoàn toàn có thể triển khai hoạt động và sinh hoạt giải trí
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 99 của lớp @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 61 của chúng tôiMục tiêu-C
@protocol ICEObjectTheo quy ước, việc triển khai những lớp có thao tác có cùng tên với lớp Slice có hậu tố
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 62. Làm điều này là không bắt buộc - bạn hoàn toàn có thể gọi lớp triển khai của tớ bất kể thứ gì bạn thích. Tuy nhiên, nếu bạn không thích sử dụng cách đặt tên ______462-hậu tố, chúng tôi khuyên bạn nên áp dụng một quy ước đặt tên khác và tuân theo quy ước đó một cách nhất quánLưu ý rằng
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 64 bắt nguồn từ @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 7. Điều này là vì, như tất cả chúng ta sẽ thấy trong giây lát, thời gian chạy Ice sẽ khởi tạo một thực thể @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 64 bất kể lúc nào nó nhận được một thực thể @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 61 qua dây và mong ước thực thể đó đáp ứng những thuộc tính của @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 7Quay lại đầu trang ^
Class Factory trong Objective-CSau khi tạo một lớp ví dụ như
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 64, chúng tôi có một triển khai và chúng tôi hoàn toàn có thể khởi tạo lớp @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 64, nhưng chúng tôi không thể nhận nó dưới dạng giá trị trả về hoặc dưới dạng tham số ngoài từ lệnh gọi thao tác. Để biết nguyên do tại sao, hãy xem xét giao diện đơn giản sauLát cắt
@protocol ICEObjectKhi một ứng dụng khách gọi thao tác
@protocol ICEObjectĐể đáp ứng thời gian chạy Ice với một nhà máy sản xuất giá trị cho lớp _______464 của chúng tôi, chúng tôi phải triển khai giao diện
@protocol ICEObjectLát cắt
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 1Trong Objective-C, giao diện này được tạo dưới dạng
@protocol ICEObjectMục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 0Khối block được chuyển ID loại của lớp để khởi tạo. Đối với lớp
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 61 của chúng tôi, ID loại là @protocol ICEObjectKhi sử dụng tính năng đếm tham chiếu tự động (ARC), bạn nên chỉ có thể định
@protocol ICEObjectĐưa ra một triển khai của nhà máy sản xuất, ví dụ như triển khai mà chúng tôi đã chỉ định cho
@protocol ICEObjectMục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 1Bây giờ, bất kể lúc nào Ice run time cần khởi tạo một lớp có loại ID
@protocol ICEObjectCuối cùng, hãy nhớ rằng nếu một lớp chỉ có những thành viên tài liệu, nhưng không còn hoạt động và sinh hoạt giải trí, thì bạn tránh việc phải tạo và đăng ký một nhà máy sản xuất giá trị để nhận những phiên bản của lớp đó. Bạn chỉ được yêu cầu đăng ký một nhà máy sản xuất giá trị khi một lớp có hoạt động và sinh hoạt giải trí
Quay lại đầu trang ^
Sử dụng một khuôn khổ để thực hiện những hoạt động và sinh hoạt giải trí sinh hoạt trong Objective-C
Một cách khác để đăng ký một nhà máy sản xuất giá trị là sử dụng khuôn khổ Mục tiêu-C để thực hiện những hoạt động và sinh hoạt giải trí sinh hoạt. Ví dụ: thay vào đó, chúng tôi hoàn toàn có thể đã triển khai phương thức
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 99 của tớ bằng phương pháp sử dụng một khuôn khổMục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 2Trong trường hợp này, tránh việc phải xuất phát từ lớp
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 7 đã tạo vì chúng tôi đáp ứng triển khai @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 99 dưới dạng khuôn khổ. Cũng tránh việc phải đăng ký một nhà máy sản xuất giá trị. thời gian chạy Ice khởi tạo một đối tượng @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 7 khi một đối tượng @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 61 đến qua dây và phương thức @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 99 được tìm thấy trong thời gian chạy khi nó thực sự được gọiĐây là một cách tiếp cận thay thế khả thi để thực hiện những hoạt động và sinh hoạt giải trí sinh hoạt của lớp. Tuy nhiên, hãy nhớ rằng, nếu việc triển khai hoạt động và sinh hoạt giải trí yêu cầu sử dụng những biến thể hiện không được định nghĩa như một phần của định nghĩa Slice của một lớp, thì bạn không thể sử dụng phương pháp này vì những khuôn khổ Mục tiêu-C không được cho phép bạn thêm những biến thể hiện vào một
Quay lại đầu trang ^
Sao chép những lớp trong Mục tiêu-CCác lớp triển khai
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 15. Hành vi in như đối với những cấu trúc, đó là bản sao nông. Để minh họa điều này, hãy xem xét định nghĩa lớp sauLát cắt
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 3Chúng tôi hoàn toàn có thể khởi tạo hai phiên bản của loại
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 16 như sauMục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 4Điều này tạo ra tình huống hiển thị dưới đây
Hai phiên bản của loại
Bây giờ, tất cả chúng ta tạo một bản sao của nút đầu tiên bằng phương pháp gọi
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 18Mục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 5Điều này tạo ra tình huống hiển thị ở đây
Như bạn hoàn toàn có thể thấy, nút đầu tiên được sao chép, nhưng nút ở đầu cuối (được chỉ ra bởi biến thể hiện
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 02 của nút đầu tiên) không được sao chép;Tham chiếu theo chu kỳ luân hồi trong Mục tiêu-C
Một điều cần lưu ý là những tham chiếu theo chu kỳ luân hồi Một trong những lớp. Ví dụ, tất cả chúng ta hoàn toàn có thể thuận tiện và đơn giản tạo một quy trình bằng phương pháp thực hiện những câu lệnh sau
Mục tiêu-C
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 6Điều này làm cho biến thể hiện
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 02 của hai lớp trỏ vào nhau, tạo ra quy trình như phía dưới
Hai nút có tham chiếu tuần hoàn
Không có vấn đề gì khi gửi biểu đồ lớp này làm tham số. Ví dụ: bạn hoàn toàn có thể chuyển
@interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 01 hoặc @interface EXTimeOfDay : ICEObject ICEShort hour; ICEShort minute; ICEShort second; @property(nonatomic, assign) ICEShort hour; @property(nonatomic, assign) ICEShort minute; @property(nonatomic, assign) ICEShort second; -(id) init:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; +(id) timeOfDay; +(id) timeOfDay:(ICEShort)hour minute:(ICEShort)minute second:(ICEShort)second; @end 08 làm tham số cho một thao tác và trong sever, thời gian chạy Ice sẽ xây dựng lại biểu đồ tương ứng một cách trung thực, duy trì chu kỳ luân hồi. Tuy nhiên, nếu sever trả về một biểu đồ như vậy từ một lệnh gọi thao tác dưới dạng giá trị trả về hoặc dưới dạng tham số ngoài, thì tất cả những phiên bản lớp là một phần của quy trình đều bị rò rỉ. Điều này cũng đúng ở phía người tiêu dùng. nếu bạn nhận được một biểu đồ như vậy từ một lời gọi hoạt động và sinh hoạt giải trí và không phá vỡ quy trình một cách rõ ràng, thì bạn sẽ rò rỉ tất cả những phiên bản tạo thành một phần của quy trìnhBởi vì rất khó để phá vỡ những chu kỳ luân hồi theo cách thủ công (và, về phía sever, đối với những giá trị trả về và tham số ngoài, không thể phá vỡ chúng), chúng tôi khuyên bạn nên tránh những tham chiếu theo chu kỳ luân hồi Một trong những lớp
Tải thêm tài liệu liên quan đến nội dung bài viết C ++ truyền lớp cho hàm tạo programming c++
Post a Comment