Tip lập trình cho IOS Programmer

A. Tip dành cho viết văn bản:

1. Chụp màn hình với Mac OS:

Trong lúc sử dụng Mac OS cũng có những lúc chúng ta cần phải chụp lại màn hình đang làm việc để dẫn chứng hay lưu lại tài liệu nào đó. Tuy nhiên khác với PC. Mac OS không có nút Print Screen nhưng Mac lại có công cụ chụp ảnh màn hình mạnh hơn rất nhiều so với Window (PS). Sau đây là 3 cách dùng tổ hợp phím để chụp màn hình và lưu nhanh thành file ảnh .png vào Desktop:

a. Chụp toàn màn hình:Chụp toàn bộ màn hình đang sử dụng, chức năng này giống với chụp màn hình của PC:

Command + Shift + 3, rồi buông ra.

b. Chụp vùng riêng trên màn hình: Đây là một trong những tính năng mạnh hơn của Mac OS. Bạn được phép chọn một vùng trên máy và lưu lại như thế sẽ cho ra một thông tin hữu ích hơn cho người dùng. Cái này muốn làm trên PC phải chụp màn hình rồi đưa vào một chương trình nhỏ để cut ví dụ như Paint, Photoshop.

Command + Shift + 4 , sau đó chọn khu vực cần chụp.

c. Chụp một thành phần giao diện: (không dính nền, đẹp, chỉ dành cho Leopard trở lên)

Giữ Command + Shift + 4, trong khi giữ 3 phím đó, ta nhấn thêm phím Space bar (thanh dài), con chuột sẽ biến thành hình Camera, ta di chuyển đến thành phần nào (Ví dụ: Cửa sổ, menu, icon, …) thì sẽ chụp thành phần đó và lưu lại thành file trên desktop.

Ví dụ: Tôi có thể chụp hình Note trên Mac như thế này mà không dính nền, không dính Wallpaper bằng cách thứ 3:

ScreenSave_Example photo TipForMacUser_Notice_zpsf0e65e1f.png

File ảnh được lưu xuống Desktop với định dạng PNG. Muốn chuyển sang định dạng khác bạn cần vào Terminal và nhập lệnh:

defaults write com.apple.screencapture type <định dạng ảnh>
killall SystemUIServer

Ví dụ:

defaults write com.apple.screencapture type jpg

killall SystemUIServer

-> file chụp ảnh màn hình sẽ có dạng JPG cho bạn sử dụng.

* Lưu ý: Thật ra Apple có lý khi sử dụng PNG làm file mặc định đơn giản vì khi bạn sử dụng tình năng chụp từng phần thì phần nằm ngoài nếu có sẽ trở thành interlace (vùng không màu) có thể sử dụng được ngay trong khi JPG thì không có.

B. Tip dành cho lập trình:

1. Sử dụng ARC trong mọi project của bạn:

ARC được giới thiệu lần đầu tiên trong IOS 5.0 và nó đã nhanh chóng được chấp nhận và sử dụng trong các chương trình mới. Điểm yếu duy nhất của nó chỉ có thể là không hỗ trợ cho những bản IOS dưới 5.0 và không phù hợp với những lập trình viên già nua, lạc hậu.

ARC là viết tắt của “Automatic Reference Counting”. ARC có thể giảm thiểu tối đa tình trạng rỏ rỉ về bộ nhớ. Nhất là cho những lập trình viên hay quên, đây là công cụ tốt nhất để giúp cho chương trình vẫn chạy ổn định trong khi bạn không cần phải nhớ quá nhiều thứ.

Hãy thử xem qua một đoạn code phổ biến khi lập trình với IOS:

UIView *lkview = [[UIView alloc] init];
// …
[self.view addSubview:lkview];
[lkview release];

Các lập trình viên thật sự rất dễ quên release view nhất là trong trường hợp code quá nhiều thứ. ARC làm nó cho bạn và không hề cần thêm bất cứ một dòng code nào.

* Câu hỏi đặt ra ở đây là: Tại sao bạn phải nhớ những thứ mà máy tính có thể làm được và làm tốt hơn? Các lập trình viên già nua, lạc hậu không muốn có sự thay đổi và hơn nữa họ không muốn từ bỏ những thứ mà họ đã viết trước đó nên câu trả lời thông thường là hãy bắt đầu bằng non-ARC để hiểu rõ về lập trình. Chuyện này thật sự không hề cần thiết. Bạn học một thứ mà thế giới không sử dụng nữa, để làm gì cơ chứ. Hãy đi theo thế giới và hưởng thụ những gì sung sướng. Đừng bám mãi vào cái quá khứ cực khổ như thế nữa.

* Nhớ có lần một lập trình viên già hỏi về tạo một array với nhiều hình sau đó release một hình đi thì nó bị lỗi gì. Bạn có cần phải nhớ và làm cái việc vô ích như thế không? Bởi vậy, công ty đó vĩnh viễn vẫn là một công ty nhỏ bé và chỉ có thể outsource cho người nước ngoài. Thật đáng tiếc cho Việt Nam.

2. Storyboard, kịch bản của project:

– Storyboard cũng là một tính năng mới được giới thiệu lần đầu tiên trong IOS 5. Nó nhanh chóng được đón nhận và thay thế XIB. Tuy nhiên XIB vẫn còn có giá trị trong một số trường hợp.

– Storyboard không chỉ giúp các lập trình viên có cái nhìn khái quát cho cả chương trình mà còn giúp lập trình viên viết ít code hơn. Ít code hơn đồng nghĩa với ít lỗi và nhanh chóng hơn so với việc sử dụng từng view (XIB) riêng lẻ.

– Nếu bạn bắt buộc phải sử dụng 1 XIB thì bạn hãy cố gắng làm cho nó càng đơn giản càng tốt. Khi sử dụng một viewcontroller hãy cố gắng load 1 xib trong cùng một thời điểm.

* Có sự khác biệt rất lớn giữa Storyboard và XIB trong bộ nhớ. Đối với Storyboard, chỉ có duy nhất một viewcontroller được sử dụng trong một thời điểm trong khi đó khi đã load XIB thì mọi tai nguyên kể cả hình ảnh, âm thanh, phim trong đó đều được lưu vào bộ nhớ. Đây là sự lãng phí rất lớn đối bộ nhớ vốn đã không nhiều nhặn gì của các điên thoại thông minh hiện nay.

* Hãy cố gắng tránh sử dụng XIB nếu có thể và sử dụng Storyboard để tiết kiệm thời gian và công sức của chính bạn. Đừng đi theo những ông già của thập kỉ trước để rồi Việt Nam so với thế giới vẫn như những người tiền sử so với người hiên đại.

a. Truyền dữ liệu giữa các View:

Cách điều chỉnh Segue trong Storyboard để truyền dữ liệu từ View này sang View khác:

– (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

   if ([segue.identifier isEqualToString:@”lkShowGameDetail”]) {

       NSArray *indexPaths = [self.collectionView indexPathsForSelectedItems];

       LKGameDetailViewController *destViewController = segue.destinationViewController;

       NSIndexPath *indexPath = [indexPaths objectAtIndex:0];

       destViewController.recipeImageName = [lkCollection objectAtIndex:indexPath.row];

       [self.collectionView deselectItemAtIndexPath:indexPath animated:NO];

   }

}

trong đó phải đặt tên cho Segue là lkShowGameDetail trong identify và View dùng để nhận segue là LKGameDetailViewController

b. Set điều kiện cho segue có chạy hay không:

– Đây là cách để set điều kiện cho Segue.

– (BOOL)shouldPerformSegueWithIdentifier:(NSString *)identifier sender:(id)sender

{

if (shareEnabled) {

return NO;

} else {

return YES;

}

}

trong đó identifier sử dụng trong trường hợp có nhiều segue trên cùng một view controller để cho thể biết được segue nào đang được gọi. NO thì segue sẽ không được Perform (thực hiện).

Hay có thể tuỳ chọn Segue được chạy bằng:

– (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
[self performSegueWithIdentifier: @”showRecipeDetail” sender: self];
}
}

c. Set background color:

self.view.backgroundColor = [UIColor redColor];

Set background cho window:

self.window.backgroundColor = [UIColor redColor];

3. Bắt sự kiện touch trên view:

// Trong ViewDidLoad
UIView *view =  ….
// khởi tạo touch hander
UITapGestureRecognizer *singleFingerTap =  [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(handleSingleTap:)];
[view addGestureRecognizer:singleFingerTap];

// Khai báo hàm nhận sự kiện touch
– (void)handleSingleTap:(UITapGestureRecognizer *)recognizer {
CGPoint location = [recognizer locationInView:[recognizer.view superview]];
// Xử lý gì đó ở đây
}

#pragma mark – Xử lý với UITouch trên View

– (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *touch = [touches anyObject];

self.gestureStart = [touch locationInView:self.view];

_lblNotice.text = [[NSString alloc] initWithFormat:@”%f and %f”, _gestureStart.x, _gestureStart.y ];

}

– (void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *touch = [touches anyObject];

CGPoint currentPosition = [touch locationInView:self.view];

}

 

II. Những website để tham khảo thêm phần lập trình IOS:

https://www.cocoacontrols.com/

 

3 thoughts on “Tip lập trình cho IOS Programmer

  1. Huu Phuc December 4, 2013 at 4:44 pm Reply

    Thank you very much !!!!!!

  2. Ngô Tiếp Tuyến December 4, 2014 at 5:08 pm Reply

    Cám ơn anh Huy nhiều .😀.
    Vài năm nữa, nếu em làm được game gì e cũng sẽ hướng dẫn lại như cách của anh để hi vọng tốc độ phát triển Game của nước mình có thể tăng lên đc 1 ít.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: