แอปพลิเคชันที่ใช้ Swift ทำงานบน OS X 10.9 / iOS 7 หรือต่ำกว่าหรือไม่


616

แอปพลิเคชันที่ใช้ Swift จะทำงานกับOS X 10.9 (Mavericks) / iOS 7 หรือต่ำกว่าหรือไม่

ตัวอย่างเช่นฉันมีเครื่องที่ใช้OS X 10.8 (Mountain Lion) และฉันสงสัยว่าแอปพลิเคชันที่ฉันเขียนใน Swift จะทำงานหรือไม่

หรือฉันต้องสร้างแอปพลิเคชั่น Swift โดยใช้ Mac OS?


51
Assuming Swift ถูกคอมไพล์เป็นไฟล์ "ปกติ" และสันนิษฐานว่าไม่มีไลบรารี่รันไทม์เฉพาะของ Swift ที่จำเป็นในระบบปฏิบัติการแล้วใช่มันควรรันบนระบบเก่า เรายังไม่รู้ ดาวน์โหลด Xcode 6 และลอง
rmaddy

12
คำตอบอย่างเป็นทางการจะพบได้ในวิดีโอ State of the Union
สตีเว่นฟิชเชอร์

3
@rmaddy FWIW: ที่ WWDC ในการนำเสนอ Swift มีการระบุไว้อย่างชัดเจนว่า Swift และ Objective-C มีรันไทม์เดียวกัน
11684

1
มันเป็นความรู้สาธารณะและถูกกล่าวถึงในประเด็นสำคัญว่ามันทำงานบนระบบปฏิบัติการเหล่านั้น
rhummelmose

3
คำถามนี้เป็นคำถามหนึ่งที่ใช้เป็นตัวอย่างในหน้าท่องเที่ยว
Donald Duck

คำตอบ:


520

ฉันเพิ่งทดสอบให้คุณแอพพลิเคชั่น Swift รวบรวมเป็นไบนารีมาตรฐานและสามารถทำงานบน OS X 10.9 และ iOS 7


แอปพลิเคชัน Simple Swift ที่ใช้สำหรับการทดสอบ:

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
ดูstackoverflow.com/questions/24007050/… - ขัดแย้งกับคำตอบนี้ (อย่างน้อยส่วน "หรือต่ำกว่า")
rmaddy

14
ฉันทดสอบเฉพาะ iOS 7.0 และ OS X 10.9 ดังที่ได้กล่าวไว้ในคำตอบ
Leandros

@ Leandros โดยใช้คำหลัก var ทำไมเราต้องพิมพ์ UIViewController สองครั้งในบรรทัดนี้ "var controller: UIViewController = UIViewController ()" var ไม่เหมือนกับ JavaScript / C # (ถ้าไม่ใช่ก็เศร้ามาก)? การร่ายนี้เป็น แต่วัตถุชนิดเดียวกันทั้งสองด้านของเครื่องหมายเท่ากับ?
Tien Do

3
@TienDo ฉันไม่มีประสบการณ์ Swift ใด ๆ แต่ฉันคิดว่าครั้งแรกUIViewControllerหลังจากที่เครื่องหมายโคลอนแสดงถึงชนิดของตัวแปรและการเกิดขึ้นครั้งที่สองหลังจากที่=เครื่องหมายเรียกตัวสร้าง (เริ่มต้นตัวแปร)
ComFreek

2
สำหรับ iOS: ใน Xcode 6 เบต้ามีเป้าหมายการปรับใช้สูงถึง iOS 6 ฉันทดสอบพวกเขาหมดแล้วหางานได้ มีคำตอบบางอย่างที่เหมือนกัน
ySiggen

197

สามารถปรับใช้รหัส Swift กับ OS X 10.9 และ iOS 7.0 มันมักจะผิดพลาดเมื่อเปิดตัวในเวอร์ชั่นระบบปฏิบัติการรุ่นเก่า


4
เกร็กขอบคุณที่มาที่นี่เพื่อตอบคำถาม คุณช่วยพูดอะไรเกี่ยวกับสิ่งที่เปลี่ยนแปลง 10.8-> 10.9 และ 6.x-> 7.0 ที่อนุญาตให้โค้ดที่สร้างจาก Swift ทำงานได้หรือไม่?
Ivan Vučica

20
Swift ตั้งค่าบิตบางส่วนในข้อมูลเมตาของ Objective-C เพื่อทำเครื่องหมายคลาสของ Swift libobjc ใน OS X 10.9 และ iOS 7.0 ถูกเปลี่ยนเป็นละเว้นบิตเหล่านี้เพื่อเตรียมพร้อมสำหรับการมาถึงของ Swift ระบบปฏิบัติการเวอร์ชั่นเก่าจะสับสนกับบิตเหล่านี้
Greg Parker

9
ฉันต้องการมากขอบคุณถ้าแอปเปิ้ลจะพิจารณาการทำสวิฟท์ปพลิเคชันทำงานบนแพลตฟอร์มเก่าเกินไป (อย่างน้อยจาก OSX 10.7 เป็นต้นไป) เหตุผลก็คือเรายังคงมีลูกค้ามากมายที่ใช้ระบบปฏิบัติการนี้ดังนั้นเราจึงไม่สามารถเริ่มพัฒนาด้วย Swift เป็นเวลาหลายปีหาก 10.9 เป็นระบบปฏิบัติการที่รองรับขั้นต่ำ!
Mike Lischke

2
@GregParker โอกาสใดที่คุณสามารถอัปเดตคำตอบสำหรับ Swift 2 ได้ไม่ว่าจะมีการเปลี่ยนแปลงข้อกำหนดรันไทม์หรือไม่?
Andrey Tarantsov

1
เป้าหมายการปรับใช้ขั้นต่ำที่รองรับสำหรับไฟล์ปฏิบัติการที่ Swift-built ยังคงเป็น iOS 7.0 และ OSX 10.9 API ที่เลิกใช้ใน iOS 7 / OSX 10.9 ขึ้นไปจะไม่สามารถใช้งานได้ เมื่อสร้าง Swift จะรองรับ SDK ที่มาพร้อมกับ Xcode เท่านั้น
Flash Sheridan

103

Apple ได้ประกาศว่าแอพ Swift จะสามารถใช้งานร่วมกับ iOS 7 และ OS X Mavericks ได้ แอพ WWDC เขียนขึ้นใน Swift


11
จริง ๆ แล้ว WWDC เขียนด้วย Swift ??
Satheeshwaran

7
ใช่แอป WWDCC เขียนด้วย Swift อย่างที่พวกเขาพูดเมื่อวานนี้
Shial

22
Jay Freeman อ้างสิทธิ์เป็นอย่างอื่น: twitter.com/saurik/status/473785847926374400
Ivan Vučica

2
กลยุทธ์ทางการตลาดของ Apple นั้นเป็นเรื่องปกติที่ใช้โดยธุรกิจ Windows เขียนขึ้นในชุดประกอบ! ดีเพียง bootloader และสิ่งอื่น ๆ แต่มันถูกเขียนขึ้นในการชุมนุม
โคลจอห์นสัน

4
@ IvanVučica แต่ 4 คลาสก็เพียงพอที่จะตอบคำถามความเข้ากันได้
ilya n

100

อัพเดท - ตาม Xcode 6 Beta 4

เป้าหมายการปรับใช้ขั้นต่ำ iOS 7 และ OS X 10.9

คอมไพเลอร์ Swift และ Xcode ตอนนี้บังคับใช้เป้าหมายการปรับใช้ขั้นต่ำของ iOS 7 หรือ OS X Mavericks การตั้งค่าเป้าหมายการปรับใช้ก่อนหน้านี้ส่งผลให้เกิดความล้มเหลวในการสร้าง

จากบันทึกย่อประจำรุ่น Xcode 6

ดังนั้นคำตอบก่อนหน้าของฉัน (แสดงด้านล่าง) จะไม่สามารถใช้ได้กับการพัฒนาเพิ่มเติมใด ๆ Swift จะไม่สามารถใช้งานได้กับ iOS6 และด้านล่างอีกต่อไป


แอปพลิเคชัน Swift สามารถทำงานบน iOS 6 แม้ว่าหลายคนกำลังบอกว่า Swift จะรองรับเฉพาะ iOS 7+ และ OS X 10.9+ จากประสบการณ์ของฉันมันไม่ใช่

ฉันได้ทดสอบแอปพลิเคชันแบบง่ายที่เขียนอย่างสมบูรณ์ใน Swift ในอุปกรณ์ iOS 6 มันทำงานได้ดีอย่างสมบูรณ์แบบ ดังที่ Apple กล่าวว่ารหัส Swift นั้นเป็นไบนารีที่เข้ากันได้กับรหัส Objective-C มันใช้คอมไพเลอร์และรันไทม์เดียวกันเพื่อสร้างไบนารี

นี่คือรหัสที่ฉันทดสอบ:

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")
    }
}

มันเป็นแอพพลิเคชั่นที่ง่ายเพียงแค่เพิ่มปุ่มโดยทางโปรแกรม ใบสมัครของฉันมีเพียงสองไฟล์และAppDelegate.swiftViewController.swift

ดังนั้นหากคุณไม่ได้ใช้ API ใหม่ใด ๆ ที่เพิ่มเข้ามาเป็นส่วนหนึ่งของ iOS 8 SDK หรือบาง API เฉพาะของ Swift (API ที่สอดคล้องกันไม่พร้อมใช้งานสำหรับ Objective-C) แอปพลิเคชันของคุณจะทำงานได้อย่างราบรื่นบน iOS 6 หรือใหม่กว่า บน iOS 5 (ไม่ผ่านการทดสอบ) APIs ส่วนใหญ่ใน Swift เป็นเพียงการแทนที่ API ของ Objective-C ที่มีอยู่ ในความเป็นจริงพวกเขาเหมือนกันในไบนารี

หมายเหตุ: ตาม Xcode 6 beta 4 สำหรับเป้าหมายการปรับใช้แอปอย่างรวดเร็วควรเป็น iOS 7 หรือ OS X 10.9 (ดูการอัปเดตข้างต้น) ดังนั้น swift จะไม่สามารถใช้งานได้กับ iOS6 และด้านล่างอีกต่อไป



เช่นเดียวกับการอัปเดตระบบก่อนหน้าบางเฟรมเวิร์ก / คลาสจะถูกยกเลิกและต้องได้รับการสนับสนุนตามเงื่อนไข
Miriam H.

@TienDo ไม่จำเป็นต้องใช้เครื่องหมายอัฒภาค :) แม้ว่าคุณจะใส่โดยไม่ได้ตั้งใจ (เป็นประเพณี) ที่ไม่เป็นปัญหา
Anil Varghese

3
แต่คุณยังสามารถใช้เครื่องหมายอัฒภาคได้หากคุณต้องการจริงๆ ข้อความสองข้อความในหนึ่งบรรทัดคั่นด้วยเครื่องหมายอัฒภาค
PaulWoodIII

33

โดยย่อ:

แอปพลิเคชันที่ใช้ Swift สามารถกำหนดเป้าหมายกลับไปที่OS X MavericksหรือiOS 7ด้วยแอพเดียวกัน

มันเป็นไปได้ยังไงกัน ?

Xcode ฝังไลบรารีรันไทม์ Swift ขนาดเล็กไว้ในชุดของแอปของคุณ เนื่องจากมีการฝังไลบรารีไว้แอปของคุณจึงใช้ Swift เวอร์ชันที่สอดคล้องกันซึ่งรันบนระบบปฏิบัติการทั้งในอดีตปัจจุบันและอนาคต

ทำไมฉันจึงควรเชื่อถือคำตอบนี้

เพราะฉันไม่ได้พูดคำตอบนี้ในขณะที่ผู้ชายแอปเปิ้ลคนหนึ่งบอกกับฉันในทวิตเตอร์หรือฉันเขียนสวัสดีโลกและทดสอบ

เราเอาไปจากแอปเปิ้ลบล็อกนักพัฒนา

เพื่อให้คุณสามารถเชื่อถือได้


2
"เล็ก" ใช้เวลาประมาณ 20 mb หรือบางอย่าง :)
BangOperator

1
การรวมรันไทม์ทั้งหมดในไบนารีอาจดูเหมือนป่องเล็กน้อย แต่เนื่องจาก Swift ยังไม่เสถียรอย่างสมบูรณ์จึงทำให้ผู้พัฒนาอนุญาตให้คอมไพล์ใหม่ด้วย Swift เวอร์ชันใหม่ในเวลาของตัวเองแทนที่จะอัพเดตไลบรารีที่แชร์และ ทำลายแอพของทุกคน เมื่อ Swift เสถียรฉันคิดว่ารันไทม์จะถูกเก็บไว้ข้าง ๆ ทุกอย่างใน dylib ที่ไหนสักแห่ง
William T Froggard

@WilliamTFroggard - ใช่หวังอย่างนั้น
Durai Amuthan.H

30

Swift ใช้รันไทม์เดียวกันกับObjective-Cและสามารถใช้ Objective-C แบบคู่ขนานในแอพพลิเคชั่นเดียวกัน (ตามคำปราศรัยของ WWDC 2014)

นี้จะต้องมีการตรวจสอบ / ตรวจสอบโดยใช้Xcode 6 และ SDK ใหม่เพื่อหาคำตอบสุดท้าย


1
ดูเหมือนว่าการใช้ Xcode Beta 6 จะช่วยให้คุณสามารถรันแอพ swift ใน 10.9.3 ได้ แต่ฉันไม่แน่ใจว่าแอพ swift จะสามารถทำงานได้ไกลแค่ไหน 10.7 หรือ 10.8
John

22

ฉันอ่านคำตอบทั้งหมดที่กล่าวว่า: ไม่ Swift ไม่ทำงานกับ iOS น้อยกว่า 7 แต่ฉันบอกว่าใช่ฉันเพิ่งสร้างโครงการ Swift ที่ทำงานใน Xcode 5 พร้อมเป้าหมายการปรับใช้ 6.0

  • ฉันเพิ่งสร้างโครงการตัวอย่างในXcode 6 BETAด้วยภาษาการเขียนโปรแกรม Swift ที่เลือก
  • ปิด Xcode 6 beta และฉันเปิดโครงการตัวอย่างนี้ใน Xcode 5 พร้อมเป้าหมายการปรับใช้ 6.0
  • และยังเลือกจำลอง 6.1

จากนั้นโครงการที่ทำงานได้ดีในการจำลอง 6.1 ฉันMacOS X 10.9.3 เป็นดังนั้นฉันกล่าวว่าใช่ที่วิ่งในต่ำกว่าiOS 7 กับ 10.9.3 Mac OS X

นี่คือภาพหน้าจอของเครื่องจำลอง:

ป้อนคำอธิบายภาพที่นี่

นี่คือตัวอย่างเช่นกัน


3
คำถาม: หากไม่มี swift สนับสนุนวิธีที่ XCode-5 สร้างแหล่งที่มาของ swift หรือไม่
Subin Sebastian

คุณสามารถดูภาพหน้าจอ simulatore :) ฉันไม่ได้สร้างภาพหน้าจอที่แนบมาข้างต้นใน photoshop
Nitin Gohel

ฉันหมายความว่าฉันได้แปลงแอพ c เป้าหมายเพื่อรวดเร็วและมีลูกค้าที่อยู่ใน iOS 6 แอปพลิเคชัน swift จะทำงานอย่างไร
Maneesh Sharma

ก่อนอื่นให้คุณลองใช้โค้ดตัวอย่างถ้าใช้งานได้แล้วใช่แล้วมันจะได้ผลแน่นอน
Nitin Gohel

20

ในขณะที่ยืนยันรหัสว่าแอปเปิ้ลตัวเองได้กล่าวว่าสวิฟท์จะเข้ากันได้บน iOS 7 และ Mavericks ในประเด็นสำคัญทางเทคนิคของพวกเขา ( รัฐแพลตฟอร์มเซสชั่น 102, รอบ 34 นาทีเครื่องหมาย 00 วินาที) ที่WWDC 2014


15

แอปพลิเคชัน Swift ได้รับการสนับสนุนในiOS 7 ขึ้นไปตามที่ระบุในบันทึกย่อรุ่นเบต้า 4 iOS 6.0, 6.1, 7.0, 7.1, 8.0 ใน Xcode 6 Beta

แอปพลิเคชัน Swift ได้รับการสนับสนุนบนแพลตฟอร์มOS X 10.9 ขึ้นไป OS X 10.4 ถึง 10.10 ในเป้าหมายการปรับใช้ ฉันได้ทดสอบการกำหนดเป้าหมาย 10.5 ถึง 10.10 และทำงานบน 10.9.3


1
ฉันคิดว่าเป้าหมายการปรับใช้ที่หลากหลายนั้นยังไม่ถูกต้อง (XCode 6 เป็นเบต้า) เพียงเพราะคุณสามารถเลือกค่าไม่ได้หมายความว่ามันทำงานได้ ฉันพยายามใช้ OSX 10.7 เป็นเป้าหมายและมันใช้งานไม่ได้ นอกจากนี้โปรดทราบว่า Greg Parker ให้การยืนยันอย่างเป็นทางการเกี่ยวกับแพลตฟอร์ม
Mike Lischke

@ ไมค์ Lischke อีกครั้งฉันมีการทดสอบหลายอย่างเพื่อสำรองข้อโต้แย้งของฉัน และฉันสามารถเรียกใช้แอพ OS X เมื่อฉันเลือก Deployment Target 10.7 แต่ฉันขอขอบคุณที่คุณนำเธรดของแอพรองรับ OS X มาใช้
vladof81

คุณจะอธิบายผลลัพธ์ของฉันได้อย่างไร แล้วเกร็กปาร์คเกอร์เขียนว่าอย่างไร ฉันมีความสุขมากหาก Swift Apps ทำงานบน 10.7 แต่จนถึงตอนนี้ฉันยังเห็นตัวอย่างการทำงานอยู่ แน่นอนฉันสามารถตั้งค่า 10.7 เป็นเป้าหมายการปรับใช้ด้วย แต่ก็ไม่ได้สร้างความแตกต่าง แอพ crahs
Mike Lischke

@Mike Lischke คุณทดสอบแอป iOS บนอุปกรณ์หรือไม่
vladof81

1
ฉันเห็นและทดสอบเป้าหมายการปรับใช้ทั้งหมดใน Xcode 6 เบต้า (เช่นเดียวกับคำตอบ) ทำงานได้ดีโดยใช้แอปทดสอบ 2 แบบ
ySiggen

14

มันจะปรากฏขึ้นการใช้งานสวิฟท์ไม่ทำงานบนOS X 10.7 ฉันเพิ่งสร้างแอปพลิเคชั่น GUI อย่างง่าย (มุมมอง, a lable, ปุ่ม) ซึ่งทำงานได้ดีบน Mavericks SDK พื้นฐานถูกตั้งค่าเป็น 10.9 และเป้าหมายการปรับใช้เป็น 10.7 ฉันคัดลอกแอปพลิเคชันนั้นจากโฟลเดอร์ DerivedData ไปยังเครื่องเสมือน 10.7 ของฉันและมันล้มเหลวเมื่อเริ่มต้นแสดงข้อผิดพลาดนี้:

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
...

อย่างไรก็ตามข้อความนี้น่ารำคาญเนื่องจากมีไลบรารี CoreGraphics ใน VM นี้อย่างแน่นอน แอปพลิเคชั่นอื่น ๆ ที่ทำให้การใช้งาน CoreGraphics ใช้งานได้ดี


14

นี่คือโพสต์ที่ฉันอ่านจากบล็อก apple Swift อาจเป็นประโยชน์:

ความเข้ากันได้ของแอพ :

หากคุณเขียนแอพ Swift คุณสามารถมั่นใจได้ว่าแอปของคุณจะทำงานได้ดีในอนาคต ในความเป็นจริงคุณสามารถกำหนดเป้าหมายกลับเป็นOS X Mavericks หรือ iOS 7ด้วยแอพเดียวกันนั้น สิ่งนี้เป็นไปได้เนื่องจาก Xcode ฝังไลบรารีรันไทม์ Swift ขนาดเล็กไว้ในชุดของแอปของคุณ เนื่องจากมีการฝังไลบรารีไว้แอปของคุณจึงใช้ Swift เวอร์ชันที่สอดคล้องกันซึ่งรันบนระบบปฏิบัติการทั้งในอดีตปัจจุบันและอนาคต

ความเข้ากันได้ไบนารีและกรอบ:

ในขณะที่ความมั่นใจในการใช้งานร่วมกันได้ของแอพพลิเคชั่นของคุณภาษา Swift จะยังคงพัฒนาต่อไปและอินเทอร์เฟซแบบไบนารี่ก็จะเปลี่ยนไปเช่นกัน เพื่อความปลอดภัยส่วนประกอบทั้งหมดในแอปของคุณควรสร้างด้วย Xcode รุ่นเดียวกันและคอมไพเลอร์ Swift เพื่อให้แน่ใจว่าทำงานร่วมกันได้

ซึ่งหมายความว่ากรอบงานต้องได้รับการจัดการอย่างรอบคอบ ตัวอย่างเช่นหากโครงการของคุณใช้เฟรมเวิร์กเพื่อแบ่งปันรหัสกับส่วนขยายที่ฝังคุณจะต้องสร้างเฟรมเวิร์กแอปและส่วนขยายร่วมกัน มันจะเป็นอันตรายหากพึ่งพาเฟรมเวิร์กไบนารีที่ใช้ Swift โดยเฉพาะจากบุคคลที่สาม เมื่อเปลี่ยนแปลงอย่างรวดเร็วเฟรมเวิร์กเหล่านี้จะไม่สามารถใช้งานร่วมกับแอพที่เหลือของคุณ เมื่ออินเทอร์เฟซแบบไบนารีเสถียรในปีหรือสองปีรันไทม์ Swift จะกลายเป็นส่วนหนึ่งของโฮสต์ระบบปฏิบัติการและข้อ จำกัด นี้จะไม่มีอีกต่อไป


12

ฉันทดสอบการใช้งานแอพสวิฟท์ที่ใช้กระดูกเปล่าบนอุปกรณ์ iPod Touch (รุ่นที่ 3) มันจะปรากฏขึ้นปพลิเคชันสวิฟท์ที่ใช้ไม่ได้ทำงานกับ iOS 5.x แต่ทำทำงานกับ iOS 6.x.

นี่คือสิ่งที่ปรากฏในบันทึกการดีบักเมื่อฉันพยายามเปิดแอปทดสอบด้วย 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

สำหรับ iOS 6.1.6 แอพทำงานได้ดีโดยไม่แสดงข้อความผิดพลาดเหล่านั้น


12

ดูเหมือนจะมีคำตอบเก่า ๆ มากมายที่นี่ดังนั้นฉันแค่ต้องการโพสต์คำตอบอย่างเป็นทางการจากทีม Swift Swift เข้ากันได้กับ OS X Mavericks และ iOS 7

บล็อก swift ของผู้พัฒนา Apple: Objective-C id เป็น Swift Any

11 ก.ค. 2014

ความเข้ากันได้

หนึ่งในคำถามที่พบบ่อยที่สุดที่เราได้ยินเกี่ยวกับ WWDC คือ“ เรื่องราวความเข้ากันได้ของ Swift คืออะไร” ดูเหมือนว่าจะเป็นหัวข้อแรกที่ยอดเยี่ยม

หากคุณเขียนแอพ Swift วันนี้และส่งไปที่ App Store ในฤดูใบไม้ร่วงนี้เมื่อวางจำหน่าย iOS 8 และ OS X Yosemite คุณสามารถมั่นใจได้ว่าแอปของคุณจะทำงานได้ดีในอนาคต ในความเป็นจริงคุณสามารถกำหนดเป้าหมายกลับเป็น OS X Mavericks หรือ iOS 7 ด้วยแอพเดียวกันนั้น สิ่งนี้เป็นไปได้เนื่องจาก Xcode ฝังไลบรารีรันไทม์ Swift ขนาดเล็กไว้ในชุดของแอปของคุณ เนื่องจากมีการฝังไลบรารีไว้แอปของคุณจึงใช้ Swift เวอร์ชันที่สอดคล้องกันซึ่งรันบนระบบปฏิบัติการทั้งในอดีตปัจจุบันและอนาคต


11

ฉันยังลองใช้แอพที่ง่ายมากใน 10.8 (ปุ่มเดียวตั้งข้อความบนฉลาก) มันล้มเหลวเมื่อเริ่มต้นตามที่ Greg Parker ระบุไว้:

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

(สิ่งนี้ใช้เป้าหมายการปรับใช้ 10.7)


10

ลองรหัสต่อไปนี้:

มันทำงานได้โดยไม่มีกระดานเรื่องราว:

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
}

และวิธีใช้ nav.rootviewcontroller
อัลลัน

8

ใช่อันที่จริงแล้ว Apple ได้ประกาศว่าแอป Swift จะสามารถใช้งานร่วมกับ iOS 7 และ OS X Mavericks ได้ นอกจากนี้แอพ WWDC ยังเขียนด้วยภาษาโปรแกรม Swift


8

เมื่อพูดถึง Swift Frameworks สำหรับวันนี้ด้วย Xcode เวอร์ชัน 6.1.1 (6A2008a) หากเฟรมเวิร์ก Swift ได้รับการกำหนดเป้าหมายเป็น iOS 7.1 คำเตือนรายงานตัวเชื่อมโยง

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

และไม่สามารถส่งแอปพลิเคชันไปยัง AppStore ได้ ตรวจสอบปัญหานี้: ผ้าสำลีเพื่อป้องกันไลบรารีและกรอบงานแบบไดนามิกไม่ให้ผ่านกับ iOS 7


Swift Framework Mach-O Typeต้องเป็นDynamic LibraryiOS 7 Static Libraryเท่านั้น
DawnSong

7

ด่วนปรับปรุงมีผลตั้งแต่15 กุมภาพันธ์ 2015เราไม่สามารถส่งแอพพลิเคไปยังร้านค้าที่ได้รับการพัฒนาโดยใช้SDK ก่อนที่จะ iOS 8 ดังนั้นจึงควรระลึกไว้เสมอว่าดีกว่าที่จะไม่กังวลเกี่ยวกับปัญหานี้เนื่องจากมีหลายคนแนะนำว่าแอพที่ทำใน Swift สามารถนำไปใช้กับOS X 10.9 และ iOS 7.0 ได้เช่นกัน


คุณจะให้ข้อมูลแก่เราหรือไม่
Binus

1
มีความแตกต่างระหว่างฐาน SDK และเป้าหมายการปรับใช้ คุณสามารถมี SDK พื้นฐานของiOS 9และเป้าหมายการปรับใช้ของiOS 7และส่งไปยัง iTunes Connect Downvoting เนื่องจากคุณไม่ได้ให้ข้อมูลแหล่งที่มา
Cœur

1
เอกสารประกอบของ Apple ในปัจจุบันยังคงกล่าวถึงการสนับสนุน iOS 4.3: developer.apple.com/library/content/documentation/IDEs/
......

1

คำตอบโค้ดสั้น ๆ ที่โพสต์โดย Leandros นั้นค่อนข้างเก่า ฉันได้แก้ไขและทำให้สามารถคอมไพล์ได้ใน Swift 5

สวิฟท์ 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
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.