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,
99,99% nội dung trên website này là nhờ hỏi ChatGPT, rồi mình biên tập lại để dễ hiểu và dùng lâu dài. Một vài bài tự viết, còn lại là “làm việc nhóm với AI”
Mình lưu tại đây để tra cứu, học tập và chia sẻ với bạn bè. Nếu bạn tìm được gì hữu ích, cứ đọc thoải mái – miễn phí, không quảng cáo.
Mình cũng có vài app cá nhân:
QuestionBank – Ôn thi vào 10 (iOS, Android)
TypingTest by QuestionBank (iOS, Android)
Cảm ơn bạn đã ghé qua!