Video: Hướng dẫn ẩn ứng dụng trên iphone,ipad một cách đơn giản nhất 2025
Khi các thuộc tính được phát triển lần đầu tiên cho lập trình ứng dụng iOS, chúng được xem như là một cách để tránh sự buồn tẻ trong việc viết các accessors ví dụ các thuộc tính dựa trên biến. Mọi người thường nghĩ về các thuộc tính như là một cách để truy cập các biến dụ.
Trong thực tế, các biến dụ không nên được tính bằng các thuộc tính, và quan trọng hơn, các biến dụ không được công khai. Thực tế, cách tiếp cận mới của Apple là đặt các khai báo biến dụ trong tệp thực thi của lớp.
Xcode 4. 2 đã xuất hiện, các lập trình khai báo các biến thể dụ trong tệp tiêu đề trong khai báo lớp @interface. Trong thời kỳ cũ, bạn đã thêm mã đậm sau đây vào TestDriveController. h:
@interface TestDriveController: UIViewController { AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar; }
Cách tiếp cận này đã tạo ra các biến ví dụ (ivars) hiển thị cho mọi người và mọi thứ và trái với nguyên tắc đóng gói (ngay cả khi các biến không thể truy cập được).
Bắt đầu với Xcode 4. 2, bây giờ bạn có thể ẩn các biến dụ bằng cách tuyên bố chúng trong tệp thực hiện bằng một trong hai cách. Đầu tiên là như một phần mở rộng lớp , mà bạn tạo ra bằng cách thêm một phần giao diện thứ hai trong tệp thực thi và mở ngoặc đơn:
@interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;} -d
Cách thứ hai là khai báo biến cá thể trong khối @implementation của lớp:
@implementation TestDriveController AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;
Một phần mở rộng của lớp là một biến thể của một mục tiêu-C category.
Phương pháp bạn sử dụng là sự lựa chọn của bạn; bằng cách sử dụng mở rộng lớp làm cho các biến dễ dàng hơn để phân biệt.
Bạn cũng có thể sử dụng các phần mở rộng lớp để có một bộ phương pháp công khai tuyên bố và sau đó khai báo các phương pháp bổ sung để sử dụng chỉ bởi lớp:
@interface TestDriveController () {AVAudioPlayer * backgroundAudioPlayer; SystemSoundID burnRubberSoundID; BOOL touchInCar;} - (void) privateMethod; -d
Các phương pháp này không thực sự riêng tư, nhưng không hiển thị trong tệp tiêu đề. Đó là "các API cá nhân."
