Các ứng dụng dựa trên Swift có hoạt động trên OS X 10.9 / iOS 7 trở xuống không?


616

Các ứng dụng dựa trên Swift sẽ hoạt động trên OS X 10.9 (Mavericks) / iOS 7 trở xuống?

Ví dụ: tôi có một máy chạy OS X 10.8 (Mountain Lion) và tôi tự hỏi liệu một ứng dụng tôi viết trong Swift sẽ chạy trên nó.

Hoặc những gì tôi cần phải tạo một ứng dụng Swift bằng Mac OS?


51
Giả sử Swift được biên dịch thành một tệp thực thi "bình thường" và giả sử không có thư viện thời gian chạy cụ thể Swift cần thiết trong HĐH, thì đúng vậy, nó nên chạy trên các hệ thống cũ. Chúng tôi chỉ chưa biết. Tải xuống Xcode 6 và dùng thử.
rmaddy

12
Một câu trả lời chính thức sẽ được tìm thấy trong video của Bang.
Steven Fisher

3
@rmaddy FWIW: tại WWDC, trong bài thuyết trình về Swift, rõ ràng nhất là Swift và Objective-C có cùng thời gian chạy.
11684

1
Đó là kiến ​​thức công cộng và thậm chí đã được đề cập trong bài phát biểu rằng nó chạy trên các hệ điều hành đó.
rhummelmose

3
Câu hỏi này là câu hỏi được sử dụng làm ví dụ trên trang tham quan .
Vịt Donald

Câu trả lời:


520

Tôi vừa thử nghiệm nó cho bạn, các ứng dụng Swift biên dịch thành các tệp nhị phân tiêu chuẩn và có thể chạy trên OS X 10.9 và iOS 7.


Ứng dụng Swift đơn giản được sử dụng để thử nghiệm:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "I'am a test label"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}

13
Xem stackoverflow.com/questions/24007050/ - nó mâu thuẫn với câu trả lời này (ít nhất là phần "hoặc thậm chí thấp hơn").
rmaddy

14
Tôi chỉ thử nghiệm iOS 7.0 và OS X 10.9. Như đã nói trong câu trả lời.
Leandros

@Leandros Bằng cách sử dụng từ khóa var, tại sao chúng ta cần phải gõ UIViewContoder hai lần trong dòng này "var điều khiển: UIViewContoder = UIViewControll ()"? Là var không giống như JavaScript / C # (nếu không, thì thật đáng buồn)? Đây có phải là đúc, nhưng các loại đối tượng là giống nhau trên cả hai mặt của dấu bằng?
Tiến Đỗ

3
@TienDo Tôi không có bất kỳ trải nghiệm Swift nào, nhưng tôi cho rằng lần đầu tiên UIViewControllersau dấu hai chấm đại diện cho loại biến và lần xuất hiện thứ hai sau khi =dấu hiệu gọi hàm tạo (khởi tạo biến).
ComFalet

2
Đối với iOS: trong Xcode 6 beta, có các mục tiêu triển khai lên đến iOS 6. Tôi đã thử nghiệm tất cả chúng, tìm ra công việc. Có một số câu trả lời giống nhau.
ySiggen

197

Mã Swift có thể được triển khai lên OS X 10.9 và iOS 7.0. Nó thường sẽ bị sập khi khởi chạy trên các phiên bản HĐH cũ.


4
Greg, cảm ơn vì đã đến đây để trả lời câu hỏi. Bạn có thể nói một chút về những gì đã thay đổi 10.8-> 10.9 và 6.x-> 7.0 cho phép mã được tạo từ Swift chạy không?
Ivan Vučica

20
Swift đặt một số bit trong siêu dữ liệu Objective-C để đánh dấu các lớp Swift. libobjc trong OS X 10.9 và iOS 7.0 đã được thay đổi để bỏ qua các bit này để chuẩn bị cho sự xuất hiện của Swift. Các phiên bản HĐH cũ hơn sẽ bị nhầm lẫn bởi các bit này.
Greg Parker

9
Tôi muốn NHIÊU đánh giá cao nếu Apple sẽ xem xét làm Swift ứng dụng làm việc trên nền tảng cũ quá (ít nhất là từ OSX 10.7 trở đi). Lý do là chúng tôi vẫn có nhiều khách hàng với HĐH này, vì vậy chúng tôi không thể bắt đầu phát triển với Swift trong nhiều năm nếu 10.9 là HĐH được hỗ trợ tối thiểu!
Mike Lischke

2
@GregParker Bất kỳ cơ hội nào bạn có thể cập nhật câu trả lời này cho Swift 2, liệu các yêu cầu thời gian chạy có thay đổi hay không?
Andrey Tarantsov

1
Các mục tiêu triển khai được hỗ trợ tối thiểu cho các tệp thực thi do Swift xây dựng vẫn là iOS 7.0 và OSX 10.9. API không dùng nữa trong iOS 7 / OSX 10.9 trở về trước sẽ không khả dụng. Khi xây dựng, Swift chỉ hỗ trợ SDK mà nó vận chuyển trong Xcode.
Flash Sheridan

103

Apple đã thông báo rằng các ứng dụng Swift sẽ tương thích ngược với iOS 7 và OS X Mavericks. Ứng dụng WWDC được viết bằng Swift.


11
WWDC thực sự được viết bằng Swift ??
Sediteshwaran

7
Có, ứng dụng WWDCC được viết bằng Swift. Như họ đã nói hôm qua.
Shial

22

2
Chiến thuật tiếp thị của Apple là một chiến lược phổ biến được sử dụng bởi các doanh nghiệp. Windows đã được viết trong hội! Chà, chỉ có bộ nạp khởi động và một số thứ khác, nhưng nó được viết theo cụm .
Cole Johnson

4
@ IvanVučica nhưng 4 lớp là đủ để trả lời câu hỏi tương thích.
ilya n.

100

Cập nhật - Theo Xcode 6 Beta 4

Mục tiêu triển khai tối thiểu iOS 7 và OS X 10.9

Trình biên dịch Swift và Xcode hiện thực thi mục tiêu triển khai tối thiểu của iOS 7 hoặc OS X Mavericks. Đặt mục tiêu triển khai sớm hơn dẫn đến lỗi xây dựng.

Từ ghi chú phát hành Xcode 6

Vì vậy, câu trả lời trước của tôi (Hiển thị bên dưới) sẽ không được áp dụng cho bất kỳ sự phát triển nào nữa. Swift sẽ không còn có sẵn cho iOS6 trở xuống


Một ứng dụng Swift có thể chạy trên iOS 6. Mặc dù nhiều người nói rằng Swift sẽ chỉ hỗ trợ iOS 7+ và OS X 10.9+, nhưng theo kinh nghiệm của tôi thì không.

Tôi đã thử nghiệm một ứng dụng đơn giản được viết hoàn toàn bằng Swift trong thiết bị iOS 6. Nó hoạt động hoàn toàn tốt . Như Apple nói, mã Swift tương thích nhị phân với mã Objective-C. Nó sử dụng cùng một trình biên dịch và thời gian chạy để tạo nhị phân.

Đây là mã tôi đã thử nghiệm:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {

        super.viewDidLoad()

        let button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
        button.frame = CGRectMake(100, 100, 100, 50)
        button.backgroundColor = UIColor.greenColor()
        button.setTitle("Test Button", forState: UIControlState.Normal)
        button.addTarget(self, action: "buttonTapped:", forControlEvents: UIControlEvents.TouchUpInside)

        self.view.addSubview(button)
    }

    func buttonTapped(sender: UIButton!) {
        println("buttonTapped")
    }
}

Nó là một ứng dụng đơn giản, chỉ cần thêm một nút lập trình. Ứng dụng của tôi chỉ chứa hai tệp AppDelegate.swiftViewController.swift.

Vì vậy, nếu bạn không sử dụng bất kỳ API mới nào được thêm vào như một phần của SDK iOS 8 hoặc một số API cụ thể của Swift (API tương ứng không có sẵn cho Objective-C), ứng dụng của bạn sẽ hoạt động trơn tru trên iOS 6 trở lên (đã được thử nghiệm và hoạt động), thậm chí trên iOS 5 (chưa được thử nghiệm). Hầu hết các API trong Swift chỉ là sự thay thế của các API Mục tiêu-C hiện có. Trong thực tế, chúng là như nhau trong nhị phân.

Lưu ý: Theo Xcode 6 beta 4 cho mục tiêu triển khai ứng dụng nhanh là iOS 7 hoặc OS X 10.9 (xem bản cập nhật ở trên). Vì vậy, swift sẽ không còn có sẵn cho iOS6 trở xuống



Giống như các bản cập nhật hệ thống trước đó, một số khung / lớp bị ngưng và phải được hỗ trợ có điều kiện.
Miriam H.

@TienDo Không cần dấu chấm phẩy :) Ngay cả khi bạn nhầm lẫn (đó là truyền thống) sẽ không thành vấn đề
Anil Varghese

3
Nhưng bạn vẫn có thể sử dụng dấu chấm phẩy nếu bạn thực sự muốn. hai câu trong một dòng được phân tách bằng dấu chấm phẩy
PaulWoodIII

33

Tóm lại:

Các ứng dụng dựa trên Swift có thể nhắm mục tiêu trở lại OS X Mavericks hoặc iOS 7 với cùng ứng dụng đó.

Làm thế nào là nó có thể ?

Xcode nhúng một thư viện thời gian chạy Swift nhỏ trong gói ứng dụng của bạn . Vì thư viện được nhúng, ứng dụng của bạn sử dụng phiên bản Swift nhất quán chạy trên các bản phát hành HĐH trong quá khứ, hiện tại và tương lai.

Tại sao tôi nên tin tưởng câu trả lời này?

Bởi vì tôi không nói câu trả lời này như một anh chàng táo đã nói với tôi trên twitter hoặc tôi đã viết lời chào thế giới và thử nghiệm nó.

Tôi lấy nó từ blog của nhà phát triển apple .

để bạn có thể tin tưởng điều này


2
"nhỏ" mất ~ 20 mb hoặc một cái gì đó. :)
BangOperator

1
Bao gồm toàn bộ thời gian chạy trong nhị phân có vẻ hơi cồng kềnh, nhưng vì Swift vẫn chưa hoàn toàn ổn định, nên họ cho phép các nhà phát triển biên dịch lại với phiên bản Swift mới trong thời gian riêng của họ, thay vì cập nhật một số thư viện chia sẻ và phá vỡ ứng dụng của mọi người. Khi Swift ổn định, tôi cho rằng thời gian chạy sẽ được lưu trữ cùng với mọi thứ khác, trong một dylib ở đâu đó.
William T Froggard

@WilliamTFroggard - Vâng hy vọng vậy
Durai Amuthan.H

30

Swift sử dụng cùng thời gian chạy với Objective-C và thậm chí có thể sống song song với Objective-C trong cùng một ứng dụng (theo bài phát biểu của WWDC 2014).

Điều này sẽ cần phải được kiểm tra / xác minh bằng Xcode 6 và SDK mới để tìm câu trả lời cuối cùng.


1
Có vẻ như việc sử dụng Xcode Beta 6 sẽ cho phép bạn chạy các ứng dụng swift vào ngày 10.9.3, nhưng tôi không chắc chắn một ứng dụng swift sẽ có thể chạy được bao xa, ví dụ 10.7 hoặc 10.8?
John

22

Tôi đã đọc tất cả các câu trả lời rằng: Không, Swift không hoạt động với ít hơn iOS 7. Nhưng tôi đã nói , tôi vừa tạo một dự án Swift chạy trong Xcode 5 với mục tiêu triển khai 6.0.

  • Tôi chỉ tạo một dự án demo trong Xcode 6 BETA với ngôn ngữ lập trình Swift được chọn.
  • Đóng Xcode 6 beta và tôi mở dự án demo này trong Xcode 5 với mục tiêu triển khai 6.0
  • Và cũng chọn giả lập 6.1 .

Sau đó, dự án đó chạy tốt trong trình giả lập 6.1 . MacOS X của tôi là 10.9.3 , vì vậy tôi đã đồng ý, nó chạy ở mức thấp hơn iOS 7. với 10.9.3 Mac OS X .

Đây là một ảnh chụp màn hình của trình giả lập:

Nhập mô tả hình ảnh ở đây

Đây là một bản demo


3
Câu hỏi: Không có hỗ trợ nhanh chóng, XCode-5 xây dựng nguồn nhanh như thế nào?
Subin Sebastian

bạn có thể thấy ảnh chụp màn hình simulatore :) tôi không tạo ảnh chụp màn hình đính kèm ở trên trong photoshop
Nitin Gohel

ý tôi là tôi đã chuyển đổi một ứng dụng c mục tiêu sang swift và có những khách hàng đang ở đó trên ios 6. Vì vậy, các ứng dụng nhanh chóng sẽ làm việc?
Maneesh Sharma

Đầu tiên bạn thử với mã demo nếu nó hoạt động thì đúng là definaty hoạt động
Nitin Gohel

20

Mặc dù mã xác nhận, nhưng chính Apple đã nói rằng Swift sẽ tương thích trên iOS 7 và Mavericks trong bài phát biểu kỹ thuật của họ ( Trạng thái của các nền tảng , phiên 102, khoảng 34 phút 00 giây) tại WWDC 2014 .


15

Các ứng dụng Swift được hỗ trợ trên iOS 7 trở lên như đã nêu trong ghi chú phát hành Beta 4. iOS 6.0, 6.1, 7.0, 7.1, 8.0 trong Xcode 6 Beta

Các ứng dụng Swift được hỗ trợ trên nền tảng OS X 10.9 trở lên . OS X 10,4 đến 10.10 trong Mục tiêu triển khai. Tôi đã thử nghiệm nhắm mục tiêu 10,5 đến 10.10 và chạy trên 10.9.3


1
Tôi nghĩ các mục tiêu triển khai khác nhau vẫn chưa chính xác (XCode 6 là bản beta). Chỉ vì bạn có thể chọn giá trị không có nghĩa là nó hoạt động. Tôi đã thử với OSX 10.7 làm mục tiêu và nó không hoạt động. Cũng lưu ý rằng một xác nhận có thẩm quyền về các nền tảng đã được đưa ra ở trên bởi Greg Parker.
Mike Lischke

@Mike Lischke, một lần nữa, tôi đã có một vài bài kiểm tra để sao lưu lập luận của mình. Và tôi có thể chạy ứng dụng OS X khi tôi chọn Deployment Target 10.7. Nhưng tôi đánh giá cao việc bạn đã đưa ra chủ đề hỗ trợ ứng dụng OS X.
vladof81

Làm thế nào để bạn giải thích kết quả của tôi sau đó? Và những gì về Greg Parker đã viết? Tôi rất vui nếu Ứng dụng Swift sẽ hoạt động vào ngày 10.7 nhưng cho đến nay tôi vẫn chưa thấy một ví dụ hoạt động. Tất nhiên tôi cũng có thể đặt 10.7 làm mục tiêu triển khai, nhưng nó không tạo ra sự khác biệt. Các ứng dụng crahs.
Mike Lischke

@Mike Lischke, bạn đã thử nghiệm ứng dụng iOS trên thiết bị chưa?
vladof81

1
Tôi cũng đã thấy nó và đã thử nghiệm tất cả các mục tiêu triển khai trong Xcode 6 beta (giống như câu trả lời). Hoạt động tốt khi sử dụng 2 ứng dụng thử nghiệm khác nhau.
ySiggen

14

Có vẻ như các ứng dụng Swift không chạy trên OS X 10.7 . Tôi vừa tạo một ứng dụng GUI đơn giản (chế độ xem, lable, nút) chạy tốt trên Mavericks. SDK cơ sở được đặt thành 10.9 và mục tiêu triển khai thành 10.7. Tôi đã sao chép ứng dụng đó từ thư mục DeruredData sang máy ảo 10.7 của mình và nó bị sập khi bắt đầu, hiển thị lỗi này:

Crashed Thread:  0

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000

Application Specific Information:
dyld: launch, loading dependent libraries

    Dyld Error Message:

  Library not loaded: /System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics
  Referenced from: /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/../Frameworks/libswiftAppKit.dylib
  Reason: image not found

Binary Images:
       0x109c65000 -        0x109c6afff +private.Swift-Test (1.0 - 1) <649695D0-58FD-3D02-9176-2D40D4E711F2> /Users/USER/Desktop/Swift-Test.app/Contents/MacOS/Swift-Test
       0x109c83000 -        0x109dbffff +libswift_stdlib_core.dylib (1.0 - 600.0.34.4.5) <10AAC369-9404-321D-A892-49F65856D7AF> /Users/USER/Desktop/Swift-Test.app/Contents/Frameworks/libswift_stdlib_core.dylib
...

Tuy nhiên, thông báo này gây khó chịu, vì chắc chắn có thư viện CoreGraphics trong VM này. Các ứng dụng khác sử dụng CoreGraphics hoạt động tốt.


14

Đây là bài đăng tôi đọc từ blog của apple Swift, có thể hữu ích:

Khả năng tương thích ứng dụng :

Nếu bạn viết một ứng dụng Swift, bạn có thể tin tưởng rằng ứng dụng của bạn sẽ hoạt động tốt trong tương lai. Trên thực tế, bạn có thể nhắm mục tiêu trở lại OS X Mavericks hoặc iOS 7 với cùng một ứng dụng. Điều này là có thể bởi vì Xcode nhúng một thư viện thời gian chạy Swift nhỏ trong gói ứng dụng của bạn. Vì thư viện được nhúng, ứng dụng của bạn sử dụng phiên bản Swift nhất quán chạy trên các bản phát hành HĐH trong quá khứ, hiện tại và tương lai.

Tương thích nhị phân và khung:

Mặc dù khả năng tương thích thời gian chạy của ứng dụng của bạn được đảm bảo, ngôn ngữ Swift sẽ tiếp tục phát triển và giao diện nhị phân cũng sẽ thay đổi. Để an toàn, tất cả các thành phần trong ứng dụng của bạn nên được xây dựng với cùng một phiên bản Xcode và trình biên dịch Swift để đảm bảo chúng hoạt động cùng nhau.

Điều này có nghĩa là các khung cần phải được quản lý cẩn thận. Chẳng hạn, nếu dự án của bạn sử dụng các khung để chia sẻ mã với một tiện ích mở rộng được nhúng, bạn sẽ muốn xây dựng các khung, ứng dụng và tiện ích mở rộng cùng nhau. Sẽ rất nguy hiểm nếu dựa vào các khung nhị phân sử dụng Swift - đặc biệt là từ các bên thứ ba. Khi Swift thay đổi, các khung đó sẽ không tương thích với phần còn lại của ứng dụng của bạn. Khi giao diện nhị phân ổn định trong một hoặc hai năm, thời gian chạy Swift sẽ trở thành một phần của HĐH máy chủ và giới hạn này sẽ không còn tồn tại.


12

Tôi đã thử nghiệm chạy một ứng dụng dựa trên Swift, đơn giản trên thiết bị iPod Touch (thế hệ thứ 3). Nó xuất hiện ứng dụng Swift dựa trên không làm việc với iOS 5.x nhưng làm việc với iOS 6.x.

Đây là những gì hiển thị trong nhật ký gỡ lỗi khi tôi cố gắng khởi chạy ứng dụng thử nghiệm với iOS 5.0.1:

dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftCoreGraphics.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDarwin.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftDispatch.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftFoundation.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftObjectiveC.dylib with errno=1
dyld: F_ADDFILESIGS failed for /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswiftUIKit.dylib with errno=1
dyld: Symbol not found: _OBJC_CLASS_$_NSObject
  Referenced from: /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib
  Expected in: /usr/lib/libobjc.A.dylib
 in /private/var/mobile/Applications/59E31E79-9525-43B0-9DF6-8FEF3C0080F1/SwiftTestApp.app/Frameworks/libswift_stdlib_core.dylib

Đối với iOS 6.1.6, ứng dụng chạy tốt mà không hiển thị các thông báo lỗi đó.


12

Dường như có rất nhiều câu trả lời cũ ở đây vì vậy tôi chỉ muốn đăng phản hồi chính thức từ nhóm Swift. Swift tương thích ngược với OS X Mavericks và iOS 7

Blog nhanh chóng của nhà phát triển Apple: Id Objective-C là Swift Any

Ngày 11 tháng 7 năm 2014

Khả năng tương thích

Một trong những câu hỏi phổ biến nhất mà chúng tôi được nghe tại WWDC là, Câu chuyện tương thích với Swift là gì? Đây có vẻ như là một chủ đề đầu tiên tuyệt vời.

Khả năng tương thích ứng dụng Nói một cách đơn giản, nếu bạn viết một ứng dụng Swift ngay hôm nay và gửi nó tới App Store vào mùa thu này khi iOS 8 và OS X Yosemite được phát hành, bạn có thể tin tưởng rằng ứng dụng của bạn sẽ hoạt động tốt trong tương lai. Trên thực tế, bạn có thể nhắm mục tiêu trở lại OS X Mavericks hoặc iOS 7 với cùng một ứng dụng. Điều này là có thể bởi vì Xcode nhúng một thư viện thời gian chạy Swift nhỏ trong gói ứng dụng của bạn. Vì thư viện được nhúng, ứng dụng của bạn sử dụng phiên bản Swift nhất quán chạy trên các bản phát hành HĐH trong quá khứ, hiện tại và tương lai.


11

Tôi cũng đã thử một ứng dụng rất đơn giản vào ngày 10.8 (một nút, đặt văn bản trên nhãn). Nó bị sập khi khởi động, như Greg Parker tuyên bố:

Dyld Error Message:
  Symbol not found: __dispatch_source_type_memorypressure
  Referenced from: /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib
  Expected in: /usr/lib/libSystem.B.dylib
in /Volumes/*/SwifTest.app/Contents/MacOS/../Frameworks/libswiftDispatch.dylib

(Điều này đã sử dụng mục tiêu triển khai là 10.7)


10

Hãy thử đoạn mã sau:

Nó hoạt động mà không có StoryBoard:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    self.window!.backgroundColor = UIColor.whiteColor()

    // Create a nav/vc pair using the custom ViewController class

    let nav = UINavigationController()
    let vc = ViewController(nibName: "ViewController", bundle: nil)

    // Push the vc onto the nav
    nav.pushViewController(vc, animated: false)

    // Set the window’s root view controller
    self.window!.rootViewController = nav

    // Present the window
    self.window!.makeKeyAndVisible()
    return true
}

Và làm thế nào để sử dụng điều khiển nav.rootview ??
Allan

8

Vâng, trên thực tế, Apple đã thông báo rằng các ứng dụng Swift sẽ tương thích ngược với iOS 7 và OS X Mavericks. Hơn nữa, ứng dụng WWDC được viết bằng ngôn ngữ lập trình Swift.


8

Khi nói đến Swift Frameworks. Còn đối với ngày hôm nay, với Xcode phiên bản 6.1.1 (6A2008a), nếu khung Swift được nhắm mục tiêu đến iOS 7.1, cảnh báo báo cáo liên kết

ld: warning: embedded dylibs/frameworks only run on iOS 8 or later.

và ứng dụng không thể được gửi đến AppStore. Kiểm tra vấn đề này: Lint để ngăn các thư viện và khung động chuyển qua iOS 7


Tuy nhiên, Swift Framework Mach-O Typephải là Dynamic Library, Static Librarychỉ chấp nhận iOS 7 .
DawnSong

7

Cập nhật nhanh, có hiệu lực từ ngày 15 tháng 2 năm 2015 , chúng tôi không thể gửi ứng dụng đến cửa hàng được phát triển bằng SDK trước iOS 8 . Vì vậy, hãy ghi nhớ điều đó, tốt hơn hết là đừng lo lắng về vấn đề này vì nhiều người đã gợi ý rằng các ứng dụng được tạo trong Swift cũng có thể được triển khai lên OS X 10.9 và iOS 7.0 .


Bạn sẽ cung cấp cho chúng tôi một nguồn?
Binus 15/03/2016

1
Có một sự khác biệt giữa SDK cơ sở và mục tiêu triển khai. Bạn có thể có SDK cơ sở của iOS 9 và Mục tiêu triển khai của iOS 7 và gửi tới iTunes Connect. Downvote vì bạn không cung cấp một nguồn.
Cœur

1
Tài liệu hiện tại của Apple vẫn đề cập đến hỗ trợ cho iOS 4.3: developer.apple.com/l
Library

1

Đoạn mã đã trả lời được được đăng bởi Leandros có vẻ hơi cũ. Tôi đã sửa và làm cho nó có thể biên dịch được trong Swift 5.

Swift 5

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
    self.window = UIWindow(frame: UIScreen.main.bounds)
    let controller = UIViewController()
    let view = UIView(frame: CGRect(x: 0, y: 0, width: 320, height: 568))
    view.backgroundColor = UIColor.red
    controller.view = view

    let label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
    label.center = CGPoint(x: 160, y: 284)
    label.textAlignment = NSTextAlignment.center
    label.text = "I'am a test label"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.