امکانات جدید Xcode 11.4 | راهنمای کاربردی
شرکت اپل به طور مرتب ابزار محبوب توسعهدهندگان پلتفرمهای مرتبط با این شرکت یعنی iOS/macOS/watchOS و غیره را بهبود میبخشد. این شرکت اخیراً و با معرفی نسخه 11.4 IDE خود، امکانات جدید Xcode را نیز معرفی کرده است که بسیار مهم هستند. در این مقاله به بررسی و معرفی این امکانات جدید میپردازیم.
کامپایلر Clang نسخه 11.0.3
اگر فریمورک شما از وابستگیهای فریمورک شخص ثالث استفاده میکند، ممکن است کامپایلر هشدار زیر را به صورت پیشفرض در زمان ایمپورت کردن آن وابستگی شخص ثالث نمایش دهد:
-Watimport-in-framework-header
دیباگ کردن
- دیباگر نما اقدام به نمایش UILayoutGuide و «قیود ارجاعی» (referencing constraints) آن میکند.
- دیباگر نما از نمایش لایهها پشتیبانی میکند. به این منظور باید به منوی Editor → Show Layers مراجعه کنید.
- اینک I/O کنسول Xcode را میتوانید به ترمینال ارسال کنید. به این منظور باید به منوی Product → Scheme → Edit Scheme → Options tab مراجعه کنید.
شبیهساز
در نسخه جدید میتوانید گواهینامههای اتصالهای مورد اعتماد را از طریق کشیدن و رها کردن روی ترمینال نصب کنید:
xcrun simctl keychain booted add-root-cert my-selfsigned.cer
امکان تغییر دادن یا ریست کردن مجوزهای حریم خصوصی دستگاه-شبیهساز وجود دارد. برای نمونه ارائه مجوز location در حالی که از اپلیکیشن استفاده میشود به صورت زیر است:
xcrun simctl privacy booted grant location com.domain.app
برای ارائه دائمی مجوز به صورت زیر عمل میکنیم:
xcrun simctl privacy booted grant location-always com.domain.app
برای ریست کردن نیز از کد زیر بهره میگیریم:
xcrun simctl privacy booted reset all com.domain.app
برای اعمال همه مجوزها از کد زیر استفاده کنید:
xcrun simctl privacy booted grant all com.domain.app
برای سوئیچ بین حالتهای ظاهری مانند روشن/تیره از کد زیر استفاده کنید:
xcrun simctl ui booted appearance dark
برای تغییر دادن نام اپراتور دستگاه از کد زیر استفاده کنید:
simctl simctl status_bar booted override --operatorName 'Starlink'
در نسخه جدید شبیهساز از اعلانهای واکشی محتوای پسزمینه و اعلانهای push ریموت پشتیبانی میکند. ضمناً simctl دارای فرمان فرعی push برای اعلانهای پوش ریموت است:
xcrun simctl push booted com.domain.app PushData.apns.
برای کسب اطلاعات بیشتر در این خصوص به مستندات رسمی (+) مراجعه کنید.
سوئیفت 5.2
کامپایلر جدید سوئیفت از اعلان مقادیر پیشفرض در تابعهای مرتبه بالا از تابعهای درجه نخست پشتیبانی میکند:
1func foo(x: Int) {
2 func bar(y: Int = x) { print(y) }
3 bar(y: 42)
4 bar() // 21
5}
6foo(x: 21)
Struct-ها یعنی کلاسها و enum-های موجود، از قابلیت callAsFunction پشتیبانی میکنند. دلیل این امر آن است که از یک ارجاع مانند یک تابع استفاده میکنیم. بهتر است بدانید که callAsFunction محدود نیست و مانند یک تابع معمولی عمل میکند. callAsFunction از کلوژرها و کلیدواژههای mutating پشتیبانی میکند و میتواند throw و rethrows شود. امکان اعلان callAsFunction-های متفاوت نیز وجود دارد.
1struct Escaper {
2 let strategy: EscapeStrategy
3 let archiver: Archiver
4 func callAsFunction(_ value: String) -> String {
5 archiver.exec(strategy.encode(value))
6 }
7}
8let escape = Escaper(strategy: strategyA, archiver: gzipArchiver)
9escape('Occupy Mars ?')
Subscript از پارامترهای پیشفرض پشتیبانی میکند.
1struct MatrixArea {
2 subscript(x: Int, y: Int = 0) -> Int {
3 ...
4 }
5}
6matrix[10] // 100
7matrix[2, 2] // 16
راهبرد جدیدی برای عیبیابی کد معرفی شده است و از این رو توضیحهای خطای زمان کامپایل بهبود یافته است.
تست کردن
کلاس XCTest از تابعهای قابل throw به ()setUp() ،tearDown() ،setUpWithError و ()tearDownWithError پشتیبانی میکند. اگر خطایی صادر شود، متد به صورت failed علامتگذاری میشود، اما با استفاده از XCTSkip API این وضعیت رد میشود.
یک قابلیت جالب امکان رد کردن گردش کد تست بر اساس شرایط است:
1func testLocation() throws {
2 try XCTSkipUnless(Permissions.locationGranted) // skip test
3
4 ...
5 switch location.intersects(dimension: dimension) {
6 case .one: try XCTSkip() // skip test
7 case .two: try testJump()
8 case .three: try testLookingAfterCorner()
9 @unknown default: fatalError()
10 }
11}
جمعبندی
با معرفی هر بهروزرسانی جدید در Xcode و ابزارهای مربوطه کار توسعه اپلیکیشنها و پروژهها ساده و راحتتر میشود. در این مقاله به بررسی امکانات جدید Xcode 11.4 پرداختیم.
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای دروس علوم و مهندسی کامپیوتر
- آموزش برنامه نویسی Swift (سوئیفت) برای برنامه نویسی iOS
- مجموعه آموزشهای برنامهنویسی
- تست Unit در Xcode — راهنمای مقدماتی
- ترفندهای Xcode که باید بدانید — راهنمای کاربردی
==