Mục lục:
- Thiết kế lớp học "tốt"
- Làm một phân lớp của một lớp hiện có hoặc sử dụng ủy ban
- Tìm nhanh và mở các tệp có liên quan trong Xcode
- Cấu hình hành vi
- Tạo a. file gitignore
- Popping up a Alert view
- Mở trình duyệt từ ứng dụng của bạn
- Chuyển đổi địa chỉ sang vị trí địa lý
- Thử nghiệm khả năng mạng
- Bộ cảm biến khởi động
Video: How to learn to code (quickly and easily!) 2025
Theo Rajiv Ramnath
Mặc dù iOS chỉ có khoảng 13% người dùng điện thoại thông minh ở Mỹ, các chương trình của nó có tỷ lệ sử dụng 55% khi bạn xem xét lưu lượng truy cập lớn trên Internet và các thiết bị iOS được mua bởi những người sử dụng thiết bị của họ thường xuyên. Ngoài ra, IOS được trang bị bộ công cụ phát triển phần mềm dựa trên Objective-C (SDK) được thiết kế tốt với nhiều chức năng để làm cho ứng dụng phát triển trở nên đơn giản và vui nhộn. Nói cách khác, iOS là một thị trường mục tiêu hoàn hảo cho một nhà phát triển ứng dụng sáng tạo.
Bắt đầu với Lập trình iOS theo mục đích
Lập trình iOS, Objective-C, định hướng đối tượng và thiết kế OO cùng nhau. Đọc tiếp cho một số mẹo nhanh hữu ích cho OO Thiết kế. Đó là thời gian để có được tốc độ!
Thiết kế lớp học "tốt"
Các lớp học của bạn phải có độ kết dính và lỏng lẻo cao. Dưới đây là danh sách kiểm tra để kiểm tra nhanh liệu một lớp có tốt không: Câu trả lời "Không" cho bất kỳ câu hỏi nào có nghĩa là bạn cần phải suy nghĩ lại lớp học của mình.
-
Bạn có thể cho lớp học một cái tên ghi lại lý do của nó được?
-
Bạn có thể cho nó một mô tả mà nói rằng nó chỉ làm một điều?
-
Liệu nó có trách nhiệm (phương pháp)? Có phải tất cả trách nhiệm liên quan đến mô tả không?
-
Liệu nó có cộng tác viên?
-
Liệu nó - hoặc các thành phần của nó - duy trì trạng thái tồn tại lâu dài?
Làm một phân lớp của một lớp hiện có hoặc sử dụng ủy ban
Nói rằng bạn cần một loại có tên Tiger và dường như nó chia sẻ trách nhiệm của một con vật. Vì vậy, bạn đang cố gắng quyết định xem bạn nên khai báo Tiger như là một phân lớp của một lớp có tên Animal, hay có thể tuyên bố một biến thành viên thuộc kiểu Animal và ủy nhiệm các trách nhiệm động vật với biến thành viên này.
Nói hai câu sau đây:
-
Tiger IS-A a Animal.
-
Tiger CAN-BE một con vật.
Nếu lần đầu tiên có ý nghĩa hơn (trong trường hợp này là như vậy), Tiger nên là một phân lớp của Animal.
Đáp ứng các phương pháp và nền tảng ứng dụng iOS
Khi viết ứng dụng iOS, điều rất quan trọng là phải hiểu và dệt mã theo từng ứng dụng vào vòng đời của nó. Đang cố gắng tìm ra phương pháp vòng đời nào để sử dụng? Kiểm tra danh sách này:
-
Sử dụng willFinishLaunchingWithOptions để thực hiện bất kỳ thao tác nào ngay sau khi ứng dụng khởi động và trước khi nó hiển thị cửa sổ đầu tiên của nó, và trước khi nó có trạng thái được khôi phục.
Bạn thường sử dụng phương pháp này để kiểm tra xem các tham số khởi động cho ứng dụng (chẳng hạn như một URL) là chính xác hay không. Bạn cũng có thể kiểm tra môi trường trong đó ứng dụng được khởi chạy (ví dụ: nó đã khởi chạy trên iPad có khả năng thực hiện cuộc gọi di động).Ngẫu nhiên, phương pháp này sẽ không hoạt động trên thiết bị có phiên bản iOS cũ hơn iOS 6.
-
Sử dụng didFinishLaunchingWithOptions để thực hiện bất kỳ thao tác nào sau khi bạn chắc chắn rằng ứng dụng sẽ bắt đầu.
Ví dụ, bạn có thể sử dụng phương pháp này để khôi phục trạng thái toàn cầu.
-
Sử dụng ứng dụngDidBecomeActive để khởi động lại quy trình đã bị tạm dừng trong khi ứng dụng không hoạt động.
Ví dụ: bạn có thể bắt đầu nghe thay đổi vị trí hoặc thậm chí làm mới giao diện người dùng bằng dữ liệu mới.
-
Sử dụng ứng dụngWillResignActive để tạm dừng ứng dụng của bạn trong khi người dùng chú ý đến hoạt động khác - chẳng hạn như trả lời cuộc gọi điện thoại.
-
Sử dụng applicationDidEnterBackground để giải phóng tài nguyên và lưu dữ liệu người dùng cùng với đủ thông tin trạng thái ứng dụng để khôi phục lại ứng dụng của bạn về trạng thái hiện tại của nó trong trường hợp nó bị chấm dứt sau đó.
Bạn được phép khoảng 5 giây xử lý trong phương pháp này, do đó, không thực hiện bất kỳ tác vụ nào không chấm dứt được - chẳng hạn như nhắc nhở người dùng.
-
Sử dụng ứng dụngWillEnterForeground để hoàn tác những gì bạn đã làm trong ứng dụngDidEnterBackground.
-
Sử dụng applicationWillTerminate để thực hiện bất kỳ công việc dọn dẹp cuối cùng nào.
Làm cho ứng dụng iOS của bạn phù hợp với tiêu dùng
Hiệu suất của chương trình iOS nhiều hơn các quy trình nền. Một vài thủ thuật đơn giản có thể tiết kiệm thời gian và tăng hiệu suất. Đối với câu chuyện thẳng, hãy kiểm tra những gợi ý này.
Tìm nhanh và mở các tệp có liên quan trong Xcode
Sử dụng lệnh Mở Nhanh để tìm và mở một tệp tại một dòng cụ thể, sử dụng tên tệp, loại hoặc ký hiệu trong tệp (như tên biến hoặc tên chức năng), như sau:
-
Chọn File → Open Quickly.
-
Trong trường tìm kiếm, gõ ký tự vào tên của tập tin hoặc biểu tượng mà bạn muốn xem.
-
Nhập dấu chấm theo sau bởi một hoặc nhiều ký tự của phần mở rộng tên tệp.
-
Để mở tập tin ở một dòng cụ thể, gõ dấu hai chấm theo sau là số dòng.
-
Chọn một tệp từ danh sách kết quả.
Hộp thoại này cũng cho phép bạn quyết định nơi để đặt một tệp trong Xcode. Chỉ cần nhấn và giữ CMD + OPT + SHIFT trong khi nhấp đúp vào tệp.
Cấu hình hành vi
Bạn có thể định cấu hình cách Xcode phản hồi lại các sự kiện thông thường bằng cách đặt hành vi của nó bằng Xcode → Preferences → Behavior settings để thiết lập các ưu tiên hành vi.
Ví dụ: bạn có thể có một bộ tab nhất định xuất hiện khi Xcode chạy ứng dụng của bạn. Hoặc, nếu một bản xây dựng không thành công, bạn có thể làm cho Xcode lưu ảnh chụp nhanh và mở khu vực gỡ lỗi trong cửa sổ không gian làm việc của bạn.
Tạo a. file gitignore
Xcode có thể dễ dàng kết nối với git, một hệ thống quản lý mã nguồn phổ biến. Nếu được sử dụng mà không có bất kỳ cấu hình nào, git sẽ cố gắng lưu trữ tất cả mọi thứ trong một dự án, thậm chí các tệp tin có mã đối tượng được biên dịch, tệp thi hành và các tệp tạm thời được Xcode sử dụng.
Để khắc phục vấn đề này, bạn cần tạo cấu hình git thích hợp. Để làm điều này, điều hướng đến thư mục dự án và tạo ra một. tệp gitignore với nội dung sau:
Trình tìm kiếm OS X. DS_Store # Xcode mỗi người dùng cấu hình *. mode1 *. mode1v3 *. mode2v3 *. quan điểm *. perspectivev3 *.pbxuser *. xcworkspace xcuserdata # Xây dựng các sản phẩm xây dựng / *. o *. LinkFileList *. hmap # Tự động sao lưu các tập tin * ~. nib / *. swp * ~
Popping up a Alert view
Ứng dụng của bạn thường cần bật lên một cảnh báo để cho người dùng biết điều gì đó đã xảy ra và rằng cô ấy có một sự lựa chọn của hành động. Đây là một danh sách kiểm tra nhanh về cách thiết lập một cảnh báo.
-
Thực hiện phương pháp clickedButtonAtIndex trong lớp sẽ làm cảnh báo bật lên.
Đoạn mã ví dụ sau cho bạn thấy:
- (void) alertView: (UIAlertView *) alertView clickedButtonAtIndex: (NSInteger) buttonIndex {if (buttonIndex == 0) {[tự chơiNewGame];} else if (buttonIndex == 1) {return;}}
-
Tạo, khởi tạo và hiển thị cảnh báo.
Đoạn mã sau đây cho bạn thấy:
UIAlertView * alert = [[UIAlertView alloc] init]; [alert setTitle: @ "Game Over!"]; [alert setMessage: @ "Chơi trò chơi khác?"]; [alert addButtonWithTitle: @ "Có"]; [alert addButtonWithTitle: @ "Không"]; [alert setDelegate: tự]; [cảnh báo hiển thị];
Kết nối ứng dụng iOS của bạn
Ứng dụng iOS của bạn có thể cần phải liên lạc với nhiều tài nguyên khác. May mắn thay, hộp công cụ iOS có nhiều kết nối chuyên biệt. Chọn một cái và đặt nó vào làm việc.
Mở trình duyệt từ ứng dụng của bạn
Đây là một cách nhanh chóng và dơ dáy để ứng dụng của bạn mở một trang web trong trình duyệt. Xem mã ví dụ sau:
- (IBAction) helpViaBrowser: (id) sender {[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ " // en.wikipedia.org org / wiki / Tictactoe"]];
Vâng, thật đơn giản!
Chuyển đổi địa chỉ sang vị trí địa lý
Hầu hết các ứng dụng bản đồ hoặc dựa trên vị trí đều cần phải chuyển đổi một chuỗi văn bản chứa địa chỉ hoặc một vị trí thành tọa độ địa lý. May mắn thay, khung iOS cung cấp một bộ mã hóa địa lý được cài đặt sẵn. Đoạn mã sau cho bạn thấy cách sử dụng bộ mã hóa địa lý:
… NSString * findString = [findTextField text]; / / chuỗi được đọc từ một trường văn bản [myGeocoder geocodeAddressString: findString hoàn thànhHandler: ^ (NSArray * placemarks, lỗi NSError *) {MKPlacemark * aPlacemark = [placemarks objectAtIndex: 0]; // aPlacemark chứa thông tin địa lý hóa địa lý …}]; …
Thử nghiệm khả năng mạng
Bạn nên kiểm tra khả năng của mạng có sẵn trước khi ứng dụng của bạn cố gắng sử dụng mạng. Dưới đây là cách bạn có thể làm bài kiểm tra này:
-
Bạn phải mang thêm hai tệp bổ sung - cụ thể là Khả năng tiếp cận. h và khả năng tiếp cận. m - từ trang web của Nhà phát triển Apple vào dự án của bạn.
Bạn có thể tìm thấy các tệp này ở đây: // developers. táo. com / Thư viện / ios / mẫu mã / Khả năng tiếp cận / Khả năng tiếp cận. zip.
-
Bạn phải bao gồm Reachability. h trong mã của bạn.
Đoạn mã sau đây cho bạn biết làm thế nào để biết mạng nào có sẵn:
+ (void) listCapabilities {// Kiểm tra mạng NSString * networkReachability = nil; Khả năng tiếp cận * reachFacade = [Khả năng tiếp cận khả năng tiếp cậnForInternetConnection]; Trạng thái NetworkStatus = [reachFacade currentReachabilityStatus]; if (status == NotReachable) networkReachability = @ "Không có networkn"; khác nếu (trạng thái == ReachableViaWiFi) networkReachability = @ "Wifi availablen"; khác nếu (trạng thái == ReachableViaWWAN) networkReachability = @ "WAN availablen"; … [textVal appendString: networkReachability]; …}
Bộ cảm biến khởi động
Trước khi bạn có thể đọc các giá trị cảm nhận, bạn phải bắt đầu và cấu hình trình quản lý chuyển động. Đoạn mã dưới đây cho bạn thấy:
… // Thiết lập trình quản lý chuyển động self-> motionManager = [[CMMotionManager alloc] init]; tự chuyển động. accelerometerUpdateInterval = 1; tự chuyển động. gyroUpdateInterval = 1; tự chuyển động. magnetometerUpdateInterval = 1; …
Tuy nhiên, chỉ cần bắt đầu quản lý chuyển động là không đủ. Bạn cũng phải bắt đầu theo dõi cảm biến, như được hiển thị ở đây:
- (IBAction) startMonitoringSensors: (id) sender {[self-> motionManager startAccelerometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMAccelerometerData * accelerometerData, NSError * error) {[tự xử lýĐơn báo cập nhật: accelerometerData. sự tăng tốc];}]; [self-> motionManager startGyroUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMGyroData * máy quay hồi chuyểnData, NSError * error) {[self handleGyroUpdates: con quay hồi chuyểnData. rotationRate];}]; [self-> motionManager startMagnetometerUpdatesToQueue: [NSOperationQueue currentQueue] withHandler: ^ (CMMagnetometerData * magneticometerData, NSError * error) {[tự kiểm soátMagnetometerUpdates: magnetometerData. magneticField];}];}
