Nhiều hơn hoặc ít hơn. Những dòng trong .h tuyên bố sự tồn tại của hai biến nào được gọi là cửa sổ và điều khiển:
@property (strong, nonatomic) UIWindow window;
@property (strong, nonatomic) ViewController controller;
Nhưng những dòng này chỉ tuyên bố sự tồn tại của các biến, họ không thực sự tạo ra chúng. Tuy nhiên, tùy thuộc vào lớp để thực hiện những điều này - chúng có thể là các biến ảo, không thực sự tồn tại nhưng gọi các phương thức tạo dữ liệu theo chương trình hoặc tải nó từ cơ sở dữ liệu hoặc một thứ gì đó.
Những dòng này trong tệp .m thực sự tạo ("tổng hợp") các biến.
@synthesize window = _window;
@synthesize viewController = _viewController;
Những dòng này thực sự nói là tên biến nội bộ là _window, nhưng tên công khai của biến là cửa sổ.Điều đó có nghĩa rằng trong lớp học mà bạn có thể truy cập các biến trực tiếp bằng cách nói
_window = something;
Nhưng bên ngoài bạn phải truy cập nó bằng cách sử
appDelegate.window = something;
Bởi vì đó là tên của nó công cộng. Bạn cũng có thể truy cập nó vào trong lớp bằng cách sử dụng self.window.
Một thực tế thú vị khác của Objective-C là sử dụng cú pháp dấu chấm để truy cập các biến theo cách này thực sự là một cách tiện dụng để gọi phương thức setter và getter để truy cập chúng. SO dòng tổng hợp, ngoài việc tạo ra một biến gọi là _window, cũng xác định hai phương pháp sau đây:
- (void)setWindow:(UIWindow *)window; // to set the _window variable
- (UIWindow *)window; // to get the _window variable
Và bạn có thể gọi những phương pháp trực tiếp nếu bạn thích, sử dụng
[self setWindow:someValue];
UIWindow *window = [self window];
http://stackoverflow.com/q/7174277/ http://stackoverflow.com/q/822487/ http://stackoverflow.com/q/2371489/ http://stackoverflow.com/q/6139593/ http: // stackoverflow .com/search? q =% 5Bobjc% 5D + gạch dưới + thuộc tính & gửi = tìm kiếm –