Tôi khá mới với Objective C và iOS, hiện đang cố gắng tìm hiểu phát triển ứng dụng bằng SDK iOS 6. Một khái niệm tôi thực sự không thể quấn quanh đầu của tôi là sự khác biệt giữa "_variable" và "self.variable" khi được truy cập trong tệp .m. Họ có giống nhau không? Hoặc khác nhau?Sự khác biệt giữa _variable & self.variable trong Objective-C là gì?
Sau đây là một mẫu đơn giản
MyClass.h
#import <Foundation/Foundation.h>
@interface MyClass : NSObject
@property (strong, nonatomic) NSString *myName;
@end
MyClass.m
#import "MyClass.h"
@interface MyClass()
@property (nonatomic, strong) NSString *anotherName;
@end
@implementation MyClass
- (void) myFunction {
_myName = @"Ares";
self.myName = @"Ares";
_anotherName = @"Michael";
self.anotherName = @"Michael";
}
@end
Vậy là có một sự khác biệt trong việc triển khai ở trên để thiết lập một biến? Biến "myName" là Công khai trong khi "anotherName" là Riêng tư.
Rất cảm kích mọi yếu tố đầu vào. Cảm ơn!
có thể trùng lặp của [Sự khác biệt giữa self.ivar và ivar?] (Http://stackoverflow.com/q/4142177/), [Sự khác biệt giữa biến tự và biến bình thường] (http://stackoverflow.com/q/ 536388 /), [Thuộc tính và accessors] (http://stackoverflow.com/q/6085080/), [Ivar tài sản, truy cập thông qua tự?] (Http://stackoverflow.com/q/4088801/), [Khi nào truy cập các thuộc tính với self] (http://stackoverflow.com/q/4271657/), [Sự khác biệt (phong cách) giữa "self.foo" và "foo" khi sử dụng getters tổng hợp là gì?] (Http: //stackoverflow.com/q/3494157/) và [nhiều hơn nữa] (http://stackoverflow.com/search?q=%5Bobjc%5D+self.ivar) –
Thực ra câu hỏi này không trùng lặp. Là người mới bắt đầu, tôi đã tìm kiếm sự khác biệt giữa _variable và self.variable. Tôi sẽ bỏ qua những câu hỏi không sử dụng dấu gạch dưới, vì vậy đây là câu hỏi duy nhất cho tôi. Nhưng, @Josh, bình luận của bạn đã giúp tôi dù sao, để hiểu họ cũng giống nhau. – Arjan
Dấu gạch dưới không thay đổi bản chất hoặc chức năng của ivars một chút: [Làm cách nào để gạch dưới trước biến trong lớp học Cocoa/ObjC?] (Http://stackoverflow.com/q/822487) –