Trong Objective-C, dấu -
và +
được sử dụng để định nghĩa phương thức (method) và chúng có ý nghĩa khác nhau:
- Dấu
-
(Instance Method):- Được sử dụng để định nghĩa các phương thức của đối tượng (instance methods).
- Các phương thức này chỉ có thể được gọi trên một thể hiện cụ thể của lớp.
- Thường được sử dụng để thực hiện hành động đối với một thể hiện cụ thể của lớp.
- (void)instanceMethodExample;
Ví Dụ:
@interface MyClass : NSObject
- (void)printName;
@end
Dấu +
(Class Method):
- Được sử dụng để định nghĩa các phương thức của lớp (class methods).
- Các phương thức này có thể được gọi trên lớp chính, không cần tạo ra một thể hiện của lớp.
- Thường được sử dụng để thực hiện các hành động liên quan đến lớp chính, không liên quan đến thể hiện cụ thể.
+ (void)classMethodExample;
Ví Dụ:
@interface MathUtility : NSObject
+ (NSInteger)add:(NSInteger)a to:(NSInteger)b;
@end
So Sánh:
- Dấu
-
(Instance Method):- Gắn liền với một thể hiện cụ thể của lớp.
- Có thể truy cập các biến thành viên của đối tượng.
- Được gọi trên một thể hiện cụ thể của lớp thông qua một biến thể hiện (instance).
- Dấu
+
(Class Method):- Gắn liền với lớp chính.
- Không thể truy cập các biến thành viên của đối tượng (vì chúng không phải là phần của thể hiện cụ thể).
- Được gọi trên lớp chính thông qua tên lớp.
Ví Dụ Minh Họa:
@interface MyClass : NSObject
@property (nonatomic, strong) NSString *name;
- (void)instanceMethod;
+ (void)classMethod;
@end
@implementation MyClass
- (void)instanceMethod {
NSLog(@"Instance method called. Name: %@", self.name);
}
+ (void)classMethod {
NSLog(@"Class method called.");
}
@end
// Sử dụng
MyClass *myObject = [[MyClass alloc] init];
[myObject instanceMethod]; // Gọi instance method
[MyClass classMethod]; // Gọi class method
Trong ví dụ trên, instanceMethod
là một phương thức của đối tượng, nó có thể được gọi trên một thể hiện cụ thể của lớp. Ngược lại, classMethod
là một phương thức của lớp, nó được gọi trực tiếp trên lớp chính mà không cần tạo ra một thể hiện cụ thể.
Xin chào,
Bài viết này sử dụng AI ChatGPT để viết sau đó được lựa chọn, biên tập lại nội dung, chỉ một phần nhỏ các bài là tôi tự viết. Nội dung thể hiện ý chí cá nhân về các vấn đề, giải pháp. Tôi lưu tại website này để học, tra cứu và chia sẻ.
Tôi là Minh, sống tại Hà Nội, kỹ sư phần mềm với hơn 20 năm kinh nghiệm. Các ngôn ngữ yêu thích của tôi là Swift, Objective-C, Java, Kotlin, .NET, HTML, JavaScript, CSS, Bootstrap, jQuery, AngularJS, Angular…
Các bạn có thể tải app của tôi trên App Store hoặc Google Play:
QuestionBank-Ôn thi vào 10: phiên bản iOS, phiên bản Android
TypingTest by QuestionBank: phiên bản iOS, phiên bản Android
Xin cảm ơn,
Minh