Nếu tôi có một ứng dụng được tạo bằng SwiftUI, thì ứng dụng đó có hoạt động với iOS dưới iOS 13 không?
Nếu tôi có một ứng dụng được tạo bằng SwiftUI, thì ứng dụng đó có hoạt động với iOS dưới iOS 13 không?
Câu trả lời:
Tôi vừa kiểm tra nó trong Xcode 11 và có thể xác nhận rằng nó sẽ không tương thích ngược, như có thể thấy trong View
triển khai SwiftUI :
/// A piece of user interface.
///
/// You create custom views by declaring types that conform to the `View`
/// protocol. Implement the required `body` property to provide the content
/// and behavior for your custom view.
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
public protocol View : _View {
/// The type of view representing the body of this view.
///
/// When you create a custom view, Swift infers this type from your
/// implementation of the required `body` property.
associatedtype Body : View
/// Declares the content and behavior of this view.
var body: Self.Body { get }
}
Tôi không nghĩ vậy, bởi vì tất cả các thư viện đều đã được chú thích cho iOS 13 trở lên.
Ngoài ra, trong tài liệu , Apple đề cập rõ ràng các phiên bản được hỗ trợ:
SwiftUI và kết hợp sử dụng Các kiểu trả lại đục trong Swift 5.1 và vì Kiểu mờ-trả lại (cùng với các tính năng khác) được triển khai trong Swift 5.1 và do bản chất của việc triển khai, chúng không thể được triển khai trở lại Swift 5.0 (không giống như DSL hoặc Thuộc tính-Wrappers ) và bởi vì iOS 13 là iOS SDK sớm nhất có chứa thời gian chạy Swift 5.1 trong hệ điều hành, vì vậy câu trả lời cho câu hỏi là không và SwiftUI and Combine không thể được sử dụng trên các phiên bản iOS trước đó.
Trừ khi, Apple cung cấp một cách để gộp thời gian chạy Swift 5.1 (hoặc các bản phát hành trong tương lai) với ứng dụng như cách nó đã từng làm với các phiên bản Swift trước đó, nhưng vì nó sẽ tăng kích thước ứng dụng và thêm chi phí cho toàn bộ hệ thống, tôi nghi ngờ điều này sẽ bao giờ xảy ra.
Swift 5.1 vẫn chưa được phát hành và SwiftUI
sử dụng các tính năng như kiểu trả về không rõ ràng , DSL , propertyDelegate (được giới thiệu trong WWDC với tên propertyWrapper ), v.v., sẽ chỉ có trong Swift 5.1. Vì Swift 5 là ổn định nhị phân, tôi đoán không thể sử dụng các khung công tác nhanh được nhúng bên trong Xcode11, do đó họ đã triển khai lại các tính năng này trong lõi của Cocoa và đánh dấu chúng là iOS13 + có sẵn cho đến khi Swift 5.1 được phát hành.
Các giả định của tôi dựa trên thực tế là, Phân biệt Bộ sưu tập Có Thứ tự và DSL sẽ có sẵn trong Swift 5.1 và không có mối tương quan nào với Xcode hoặc hệ sinh thái của Apple, nhưng chúng cũng được đánh dấu là @available(iOS13,...)
. Điều này có nghĩa là họ phải đánh dấu mọi thứ bằng cách sử dụng các tính năng của Swift 5.1 với thuộc tính tính khả dụng của iOS. Một số trong số chúng sẽ bị xóa sau khi Swift 5.1 được phát hành, nhưng chúng tôi không thể chắc chắn về điều đó SwiftUI
và Combine
trừ khi Apple nói khác. Điều này cũng được đề cập trong đề xuất của DSL :
Thực hiện: PR . Lưu ý rằng việc triển khai trong bản xem trước dành cho nhà phát triển Xcode sử dụng một chuyển đổi đơn giản hơn một chút so với cách được mô tả ở đây. PR được liên kết phản ánh việc triển khai trong bản xem trước nhưng đang được phát triển tích cực để phù hợp với đề xuất này.
Vì vậy, giới hạn không tương thích ngược có thể được dỡ bỏ khi Swift 5.1 được phát hành, nhưng nó thực sự cần được nhóm Apple làm rõ .
Số SwiftUI đòi hỏi một mục tiêu triển khai của iOS 13 hoặc mới hơn, hệ điều hành MacOS 10.15 hay muộn, tvOS 13 trở lên hoặc watchos 6 hoặc mới hơn. Khung chứa nhiều kiểu mới không tồn tại trên các phiên bản HĐH cũ hơn.
Nếu bạn muốn hỗ trợ iPhone chứ không phải iPad, bạn có thể mong đợi hầu hết người dùng sẽ nâng cấp lên iOS 13 trong vòng 12-18 tháng (bắt đầu từ ngày phát hành). Có thể là 85-90%? (Tôi nghĩ rằng Apple cho biết tại thời điểm này vẫn còn 15% người dùng chưa sử dụng iOS 12) Tuy nhiên, vẫn còn khá lâu khi bạn sẽ không thể triển khai ứng dụng SwiftUI ngay lập tức nếu không có nguy cơ bị nhiều người dùng xa lánh.
Ngoài ra, tùy thuộc vào 10-15% còn lại, điều đó có thể có nghĩa là rất nhiều người dùng (và $$) cho bạn còn lại trên bảng.
Nếu bạn cũng đang hỗ trợ iPad thì khó khăn hơn vì mọi người không nâng cấp iPad của họ thường xuyên. Có rất nhiều iPad 2 cùng với iPad thế hệ thứ 3 và thứ 4 vẫn còn trong tự nhiên, chỉ có 10.3.3 và không thể nâng cấp nữa. Mọi người sẽ không đứng dậy và trả từ 400 - 1.000 USD cho một chiếc iPad mới khi iPad của chúng hoạt động hoàn toàn tốt.
Luôn có chỗ và nhu cầu cập nhật ứng dụng, làm cho ứng dụng trở nên tốt hơn, sửa lỗi, điều đó không nhất thiết phải liên quan đến iOS 13. . không có trên phiên bản iOS mới nhất. và chúng tôi thậm chí chưa nói về khách hàng doanh nghiệp / công ty mà rất nhiều cửa hàng nhà phát triển hỗ trợ. có rất nhiều phản hồi về các bản cập nhật iOS vì nhiều lý do khác nhau trong lĩnh vực đó.
Vì vậy, trước khi bạn cảm thấy hào hứng với iOS 13 và SwiftUI (điều bạn hoàn toàn nên làm vì nó tuyệt vời), hãy quay lại thế giới thực, bên ngoài Thung lũng Silicon, điều đó sẽ không hoàn toàn phù hợp với những gì người tiêu dùng bình thường mong đợi và bạn sẽ cần hỗ trợ thiết bị cũ hơn và cần phải như vậy vì có quá nhiều người mà bạn sẽ xa lánh.
Rất tiếc, dựa trên tài liệu của Apple, nó chỉ có sẵn bắt đầu từ iOS 13.
Nó tương thích với iOS 13+. Đây là liên kết đến tài liệu của nó.
https://developer.apple.com/documentation/swiftui/
Ngay cả Xcode 10 cũng không hỗ trợ nó. Bạn cần sử dụng Xcode 11 đang ở giai đoạn thử nghiệm kể từ (ngày 3 tháng 6 năm 2019). https://developer.apple.com/tutorials/swiftui/creating-and-comosystem-views
chỉ hoạt động cho ios 13 trở lên
bạn vẫn có thể đính kèm SwiftUI
mã của mình bằng cách sử dụng
@available(iOS 13.0, *)
nếu bạn vẫn sử dụng Xcode bên dưới Xcode 11 và có mã SwiftUI, bạn có thể bọc nó bằng
#if canImport(SwiftUI)
...
#endif
Điều này có thể khắc phục sự cố khi biên dịch với Xcode bên dưới Xcode 11
Như mọi người đã nói, nó sẽ không tương thích ngược với các phiên bản iOS cũ hơn. Nhưng do Apple luôn có cơ sở cài đặt cao cho iOS mới nhất của họ và cũng cho rằng iOS 13 yêu cầu iPhone 6S trở lên, iPad Air 2 trở lên, iPad mini 4 mới và iPhone SE. Đại đa số người dùng sẽ có thể cài đặt iOS 13 và tận hưởng các ứng dụng SwiftUI đáng yêu.
Như tất cả những người trước đây tôi đã đề cập, rất rõ ràng rằng nó sẽ yêu cầu iOS 13 trở lên. Nhưng với tư cách là một nhà phát triển iOS mới, tôi lo lắng không biết mình nên áp dụng SwiftUI ở mức độ nào so với UIKit. Tôi đã xây dựng một số dự án nhỏ với UIKit và đã đi đến một nơi nào đó nâng cao với nó.
Nhưng khi SwiftUI bắt đầu, làm thế nào để kết hợp giữa chúng. Bài viết trong liên kết sau đặt tất cả trong ngữ cảnh: https://www.hackingwithswift.com/quick-start/swiftui/ans tower- the-big-question-should-you-learn-swiftui-uikit-or-both
Mối quan tâm duy nhất của tôi bây giờ là tôi nhận thấy với Xcode 11 rằng một dự án Xcode không thể kết hợp cả Storyboards và SwiftUI.
Đáng tiếc là không, SwiftUI chỉ được phép trong iOS 13 trở lên. Nó đã được giới thiệu trong khuôn khổ iOS 13. Trước iOS 13, mọi thứ đều được xây dựng bằng khung Obj-C (Bao gồm cả Swift).
Ở phía bên phải của tài liệu dành cho nhà phát triển, nó hiển thị các phiên bản được hỗ trợ của iOS, macOS, tvOS, watchOS, v.v.
https://developer.apple.com/documentation/swiftui/
Hi vọng điêu nay co ich!