Có gì mới trong Xcode 8?

143

Tại sự kiện WWDC vào tháng 6/2016, Apple đã cải tiến những công cụ lập trình và bổ sung 1 số tính năng mới, rất thú vị. Thời điểm của bài viết là tháng 7/2016 nên sẽ review lại 1 số thay đổi trong Xcode dưới góc độ Xcode 8 chưa được công bố chính thức.

Mãi cho đến Xcode 8, mỗi phiên bản của Xcode được gắn với 1 phiên bản đặc biệt của ngôn ngữ lập trình Swift. Nhưng điều này không còn đúng với Xcode 8 nữa. Swift 3 đã đem đến những thay đổi và những thay đổi này đang phá vỡ nhiều thứ khác.

Các dự án được tạo bằng Xcode 8 sẽ mặc định sử dụng Swift 3. Thật may là Xcode 8 gồm bộ công cụ lập trình giúp các dev có thể liên kết chính xác với Swift 2, Swift 2.3.

Use Legacy Swift Language Version

Có nghĩa là bạn được quyền chọn thời điểm tích hợp dự án lên Swift 3. Để configure 1 mục tiêu cho Swift 2.3, hãy mở build settings của mục tiêu đó và thiết lập Use Legacy Swift Language Version thành Yes.

Xcode 8 bao gồm cả công cụ migration để chuyển đổi dự án vào Swift 3. Tôi đã nhận được rất nhiều kết quả khác nhau với công cụ migration của Xcode 7. Swift 3 tiếp tục giới thiệu rất nhiều thay đổi nên hy vọng là công cụ migration sẽ cải tiến đáng kể.

Source Editor Extensions là bước khởi đầu tốt dành cho các dev yêu cầu cấu trúc plugin nguyên bản. Có khá nhiều extensions cho Xcode, nhưng Apple nhấn mạnh vào các extensions hiện đang được tập trung vào điều khiển và điều hướng các nội dung của source editor. Xcode 8 có 1 template giúp bạn làm quen điều này.

Một trong những điểm mà tác giả bài viết yêu thích về kiến trúc extension là mỗi extension chạy trong 1 quy trình riêng biệt, đồng nghĩa 1 extension crashing sẽ không làm cho Xcode tắt đột ngột. Điều này thường gây ra vấn đề với các homegrown plugins, đăc biệt là nếu Apple tung ra cập nhật lớn cho Xcode.

Xcode Source Editor Extension Template

Một lợi ích khác của extensions về plugins là tính bảo mật. Bạn có thể đăng kí và phát hành extensions sử dụng tài khoản dev của mình. Apple cũng đề cập rằng bạn có thể sử dnjg Mac App Strore để tung các extensions – đây là lưa chọn tuyệt vời nếu bạn muốn kiếm tiền từ các extensions.

Tình trạng các dev giỏi nhất cũng dành một lượng thời gian đáng kể để debug app đã chứng tỏ nhu cầu sở hữ các công cụ tốt hơn để thực hiện nhiệm vụ debug này. Và Xcode 8 đã giới thiệu 1 số cập nhật liên quan đến debug.
View Debugging
View debugging mạnh mẽ hơn trong Xcode 8. Khả năng tin cậy tăng, việc debug các layouts mơ hồ hoặc không đáp ứng được nhu cầu trở nên dễ dàng hơn nhờ có view debugger cải tiến, hiển thị các vấn đề về runtime. Cụ thể, Xcode 8 giới thiệu runtime bên cạnh thời gian lập trình. Nếu bạn gặp vấn đề với Auto Layout lúc chạy, Xcode sẽ hiển thị vấn đề trong Issues Navigator bên trái
Runtime Issues
Memory Debugging
Xcode 8 cũng hỗ trợ memory debugger khá ấn tượng trong việc kiểm tra những lỗ hổng bộ nhớ và duy trì chu kì.
Memory Debugging

Code signing là điều “tai ác” cần thiết dành cho các dev yêu thích platfrom của Apple. Thậm chí các dev “cựu binh” cũng đang đối mặt với các vấn đề code signing trong từng thời kì. Đối với Platforms State của Union, button Fix Issue của Apple cũng hiếm khi giải quyết được mà thỉnh thoảng còn làm tình hình tệ hơn. Với Xcode 8, các vấn đề của code signing chỉ còn là quá khứ. Với mỗi mục tiêu, bạn có thể kiểm tra checkbox, hỗ trợ Xcode quản lý code singing thay cho bạn. Lựa chọn này được kích hoạt mặc định dành cho các dự án mới. Khi đã kiểm trra, Xcode quản lý giúp bạn các giấy chứng nhận, hồ sơ cấp phép và các nhận dạng ứng dụng.
The Fix Issue button usually doesnt fix the issue

Code Signing Done for You

 San Francisco Mono
Nếu bạn yêu thích làm việc với phần mềm đẹp thủ công, bạn có thể sẽ thích font San Francisco Mono đi kèm với Xcode 8. Đây là biến thể đơn cách của San Francisco và kết hợp gọn gàng với font hệ thống của macOS
San Francisco Mono
Line Highlighting 
Bạn có nhận ra dòng được nhấn mạnh trong screenshot bên dưới? Đây là bổ sung đáng mong đợi khác mà Apple đã thêm vào Xcode 8. Một số dev hiện đang sử dụng Backlight cho Xcode để đạt được hiệu ứng tương tự như trong Xcode 7 nhưng các dev sẽ không cần đến nó trong Xcode 8 nữa.
 
Code Completion cho hình ảnh
Về việc từ bỏ các plugin bên thứ 3, hiện tôi đang dùng plugin KSImageNamed của Kent Sutherland để kích hoạt code completion cho hình ảnh trong Xcode.
Khi chuyển sang Xcode 8, tính năng này sẽ được xây dựng trong Xcode nên không cần dùng plugin đó nữa.
Code Completion for Images

Các dev dành lượng lớn thời gian để tìm kiếm và đọc các tài liệu lập trình, trong đó các tài liệu của Apple đều được đánh giá là rất hay. Tuy nhiên, việc tìm kiếm được các tài liệu đó lại là câu chuyện khác. Với Xcode 8, format tài liệu mới trông rất tuyệt vời và việc tìm kiếm nhanh chóng, dễ sử dụng. Apple đã củng cố tài liệu cho platform của mình, đảm bảo vùng phủ bộ nhớ (memory footprint) nhỏ hơn.

New Documentation Browser

New Documentation Browser

Nguồn: IDE Academy via Code.Tutplus