สัญลักษณ์ที่ซ้ำกันสำหรับสถาปัตยกรรม x86_64 ภายใต้ Xcode


219

ตอนนี้ฉันมีคำถามเดียวกันกับชื่อข้างต้น แต่ยังไม่พบคำตอบที่ถูกต้อง ฉันได้รับข้อผิดพลาด:

    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
duplicate symbol _OBJC_METACLASS_$_MoboSDK in:
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Intermediates/TestMoboSDK-Client.build/Debug-iphonesimulator/TestMoboSDK-Client.build/Objects-normal/x86_64/MoboSDK.o
    /Users/nle/Library/Developer/Xcode/DerivedData/TestMoboSDK-Client-cgodalyxmwqzynaxfbbewrooymnq/Build/Products/Debug-iphonesimulator/libMoboSDK.a(MoboSDK.o)
ld: 75 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

ความช่วยเหลือใด ๆ ที่ชื่นชม

ในที่สุด  ผมก็หาเหตุผลของข้อผิดพลาดนี้ทำให้ฉันเพิ่มไปยัง-ObjC Other Linker Flagsหลังจากลบค่านี้แล้วฉันสามารถสร้างโครงการได้สำเร็จ แต่ฉันไม่รู้ว่าทำไม มีใครอธิบายเรื่องนี้ได้บ้าง


ตัวเชื่อมโยงพบสัญลักษณ์ที่กำหนดไว้มากกว่าหนึ่งครั้ง - 75 เพื่อให้เป็นที่แน่นอน อาจเป็นเพราะคุณ#includeหรือ#importบางสิ่งบางอย่าง (น่าจะเป็น MoboSDK ไม่ว่าจะเป็นอะไร) มากกว่าหนึ่งครั้ง
ravron

ข้อผิดพลาดนี้เกิดขึ้นหลังจากที่ฉันเพิ่มGoogleConversionTrackingSDK-iOS-3.0เข้าไปในโครงการของฉันก่อนหน้านี้มันใช้ได้ผลฉันพยายามลบออก แต่ข้อผิดพลาดยังคงเกิดขึ้น
lee

มันไม่ใช่กรณีของคุณสาเหตุก่อนที่ฉันจะเพิ่ม sdk ของ google โครงการของฉันสร้างตกลง
lee

คำตอบที่สองจาก Adam Waite นั้นตรงไปตรงมาจริงๆ ตรวจสอบให้แน่ใจว่าไม่มีไฟล์. m นำเข้าที่ใดที่หนึ่ง
Bogdan

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

คำตอบ:


109

75 สัญลักษณ์ที่ซ้ำกันสำหรับสถาปัตยกรรม x86_64

หมายความว่าคุณโหลดฟังก์ชันเดียวกันสองครั้ง เนื่องจากปัญหาหายไปหลังจากลบออก -ObjCจากOther Linker Flags, สิ่งนี้หมายความว่าตัวเลือกนี้จะทำให้โหลดได้สองครั้ง:

จาก Q&A ทางเทคนิค

การตั้งค่าสถานะนี้ทำให้ linker โหลดทุกวัตถุไฟล์ในไลบรารีที่กำหนดคลาสหรือหมวดหมู่ Objective-C ในขณะที่ตัวเลือกนี้โดยทั่วไปจะส่งผลให้เกิดการปฏิบัติการที่มีขนาดใหญ่ขึ้น (เนื่องจากรหัสวัตถุเพิ่มเติมโหลดลงในแอปพลิเคชัน) แต่จะช่วยให้การสร้างไลบรารีสแตติก Objective-C ที่สำเร็จมีประสิทธิภาพ

https://developer.apple.com/library/content/qa/qa1490/_index.html


1
ตรวจสอบให้แน่ใจว่าคุณลบไฟล์วัตถุใด ๆ ในโครงการ xcode ของคุณ
สมมุติฐานในกระดูกไหปลาร้า

5
มันก็ใช้ได้กับฉันด้วยเช่นกัน แต่ห้องสมุดอื่น ๆ ของฉันขึ้นอยู่กับการ-ObjCตั้งค่าสถานะ ดังนั้นฉันต้องเก็บสถานะนี้ในการตั้งค่าโครงการของฉัน คุณช่วยแนะนำวิธีแก้ปัญหาอื่น ๆ ได้ไหม
นิล Targe

3
ฉันเดาว่าคุณจำเป็นต้องตรวจสอบไลบรารีทั้งหมดของคุณ: หากคุณได้รับข้อผิดพลาด linker ซ้ำนั่นหมายความว่าคุณมีซอร์สโค้ดเดียวกันในไลบรารี 2 ไลบรารีขึ้นไป
David V

ฉันต้องลบห้องสมุดปฏิกิริยาบางอย่างที่มันถูกร้องเรียนภายใต้เป้าหมาย -> สร้างเฟส -> เชื่อมโยงไบนารีกับไลบรารีใน Xcode เนื่องจากขัดแย้งกับฝักโกโก้ของฉันที่ติดตั้ง React
Coty Embry

ในกรณีของฉันฉันมีการนำเข้าไฟล์. m ความผิดพลาดโง่ ๆ เมื่อฉันนำเข้าไฟล์. h มันพร้อมสำหรับการสร้าง !! ขอบคุณ
Ravi

261

สำหรับฉันการเปลี่ยน 'ไม่บล็อกทั่วไป' จากใช่เป็นไม่ใช่ (ภายใต้เป้าหมาย -> สร้างการตั้งค่า -> Apple LLVM - การสร้างรหัส) แก้ไขปัญหาได้


3
นี่เป็นการแก้ไขปัญหาของฉัน มันเคยต้องการที่จะเปลี่ยนมันกลับไปNO? อะไรคือเหตุผลเบื้องหลังสิ่งนี้
Hemang

3
ใช่สิ่งนี้ช่วยแก้ปัญหา แต่ไม่ใช่เหตุผลที่อยู่เบื้องหลัง หากคุณกำหนด const ให้ตรวจสอบว่า definiton นั้นโอเค ในกรณีของฉันฉันเพียงแค่ลืม "ภายนอก" นี่คือคำตอบใน Sauvik Dolui
coco

10
Xcode 8 แจ้งการเปลี่ยนแปลงนี้เป็นหนึ่งในการอัปเดตอัตโนมัติและทำให้
บิลด์

1
หลังจากใช้เวลา 2 ชั่วโมงปัญหานี้ได้รับการแก้ไขเนื่องจากคำตอบนี้ ขอบคุณ
Manish Pathak

1
ใช้งานได้ แต่ฉันต้องเปลี่ยนมันในเป้าหมายและโครงการ
Nooblhu

251

โง่ แต่ให้แน่ใจว่าคุณไม่ได้#importแก้ไข.mไฟล์โดยไม่ได้ตั้งใจ


3
ฉันไม่ได้ทำสิ่งนี้ แต่วิธีแก้ปัญหานี้ช่วยฉันค้นหาสิ่งที่ฉันได้ทำซึ่งเป็นการประกาศตัวแปรนอกบล็อก @interface ในไฟล์. h โดยไม่ได้ตั้งใจ
สกูตเตอร์

เมื่อใช้การทดสอบหน่วยไฟล์. m เท่านั้นที่จะถูกสร้างขึ้น ฉันสร้างไฟล์ส่วนหัวสำหรับมันแม้ว่าฉันคิดว่านี่ไม่ใช่ทางออกที่ดีที่สุด - ฉันต้องการสร้างคลาสทดสอบพื้นฐาน
Bruno Muniz

ขอบคุณมากที่ให้ความกระจ่างแก่ใจของฉันสำหรับความเป็นไปได้ที่ฉันทำผิดพลาดโง่ ๆ
Daniel Lima

วิธีการเกี่ยวกับไฟล์. m การนำเข้าข้ามโครงการ
noveleven

54

ในกรณีของฉันฉันเพิ่งสร้างไฟล์ส่วนหัวเพื่อกำหนดสตริงคงที่เช่นนี้

NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";

ฉันแก้ไขสถานการณ์นี้โดยใช้static:

static NSString *const AppDescriptionString = @"Healthy is the best way to keep fit";

2
นี้แก้ไขปัญหาสำหรับฉัน แม้ว่าฉันจะนำหน้าexternแทนstatic: extern NSString * const kNotificationName;. ซึ่งแปลกเพราะคุณมักจะไม่เพิ่มคำนำหน้าดังกล่าวและทำงานได้ดี ..
1244109

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

@ ไซเรนฉันก็คาดว่าจะมีข้อความแสดงข้อผิดพลาดที่ดีขึ้นจากคอมไพเลอร์ LLVM อย่างไรก็ตามฉันโชคดีที่พบข้อผิดพลาดหลังจาก 2 วัน :(
Sauvik Dolui

นี่เป็นปัญหาของฉันและทำไมปัญหาจริงที่เกิดจากสิ่งนี้
Fatlad

นี่เป็นสิ่งที่ดีถ้าตัวแปรทั้งหมดAppStrings.hเป็นค่าคงที่ แต่จะทำให้ havok หากคุณต้องการตัวแปรที่ผันแปรได้ทั่วโลกเนื่องจากไฟล์ต้นฉบับทุกไฟล์ที่มีไฟล์ส่วนหัวจะมีสำเนาของตัวแปรเอง มันเป็นทางออกที่ไม่ดี
trojanfoe

32

ฉันพบคำตอบที่ได้รับการยอมรับในปัญหา แต่ไม่ได้ช่วยฉันแก้ปัญหาหวังว่าคำตอบนี้จะช่วยในเรื่องที่น่าผิดหวังนี้

duplicate symbol _OBJC_IVAR_$_BLoginViewController._hud in:

17 duplicate symbols for architecture x86_64

"หมายความว่าคุณโหลดฟังก์ชันเดียวกันสองครั้งเนื่องจากปัญหาหายไปหลังจากลบ -ObjC จาก Other Linker Flags หมายความว่าตัวเลือกนี้จะส่งผลให้ฟังก์ชันโหลดสองครั้ง:"

ในแง่ของคนธรรมดาสิ่งนี้หมายความว่าเรามีสองไฟล์ในโครงการของเราที่มีชื่อเดียวกัน บางทีคุณอาจรวมโครงการหนึ่งเข้ากับอีกโครงการหนึ่ง ดูข้อผิดพลาดด้านบนข้อผิดพลาด "สัญลักษณ์ที่ซ้ำกัน" เพื่อดูว่ามีการทำซ้ำโฟลเดอร์ใดในกรณีของฉันคือ BLoginViewController

ตัวอย่างเช่นในภาพด้านล่างคุณสามารถเห็นฉันมีสอง BImageViewControllers สำหรับฉันนี่คือสิ่งที่ทำให้เกิดปัญหา

ทันทีที่ฉันลบหนึ่งรายการปัญหาจะหายไป :)

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


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

32

ฉันมีปัญหาเดียวกัน ใน Xcode 7.2 ในเส้นทางเป้าหมายโครงการ> การตั้งค่าการสร้าง> ไม่มีบล็อกทั่วไปฉันเปลี่ยนเป็น NO


4
นี่คือปัญหาของฉัน มันเป็นการตั้งค่า Xcode 8 ที่ได้วางไว้ ขอบคุณ!
Robert J. Clegg

30

เกิดขึ้นเช่นกันเมื่อคุณประกาศตัวแปร const ที่มีชื่อเหมือนกันในคลาสอื่น:

ในไฟล์ Message.m

const int kMessageLength = 36;

@implementation Message

@end

ในไฟล์ Chat.m

const int kMessageLength = 20;

@implementation Chat

@end

1
ไม่ใช่ const แต่มันทำงานได้ดีสำหรับฉันเมื่อฉันเปลี่ยนชื่อตัวแปร
Oktay

ฉันมีสิ่งนี้กับตัวชี้ของตัวแปรระดับของตัวเองที่กำหนดไว้ใน @implementation ของสองคลาสที่แตกต่างกัน
ammianus

ณ เวลารวบรวมคอมไพเลอร์ตรวจสอบสัญลักษณ์ที่ซ้ำกัน (ที่นี่ตัวแปรทั่วโลก) เฉพาะในไฟล์ส่วนหัว (.h) แต่เมื่อถึงเวลาเชื่อมโยงตัวแปร (ทั่วโลก) ในไฟล์การนำไปใช้ (.m) จะถูกตรวจสอบและหากมีสิ่งใดซ้ำซ้อนตัวเชื่อมโยงจะผ่านข้อผิดพลาด: สัญลักษณ์ที่ซ้ำกัน _xyz
PANKAJ VERMA

30

สิ่งนี้เกิดขึ้นกับฉันเมื่อฉันยอมรับป๊อปอัป "การตั้งค่าที่แนะนำ" ในโครงการที่ฉันพัฒนาเมื่อสองปีก่อนใน Objective-C

แต่ปัญหาก็คือว่าเมื่อคุณได้รับการยอมรับการปรับปรุง "ตั้งค่าที่แนะนำ" Xcode GCC_NO_COMMON_BLOCKS = YES;เปลี่ยนไปโดยอัตโนมัติหรือเพิ่มการตั้งค่าบางสร้างรวมทั้ง

สิ่งนี้ทำให้การสร้างล้มเหลวโดยมีduplicate symbolข้อผิดพลาดในโครงการที่อัปเดตของฉัน ดังนั้นฉันจึงเปลี่ยนNo Common Blockเป็นการNOตั้งค่าการสร้างและข้อผิดพลาดได้หายไป


3
ใช่สิ่งนี้ช่วยฉัน Xcode 8 อัปเดตโปรเจ็กต์ที่เก่ากว่าให้เป็นการตั้งค่าที่แนะนำ เปลี่ยนกลับมาและฉันก็ดีใจที่ได้กลับไปอีกครั้ง ขอบคุณ!
Zoltán

2
ทำได้ดีมาก ช่วยฉันมาก! โหวตให้คุณที่รัก! ;-)
Helen Wood

1
เพื่อนที่ยอดเยี่ยม :)
Burf2000

16

วิธีที่เร็วที่สุดในการค้นหาสิ่งที่ซ้ำกันคือ:

  1. ไปที่เป้าหมาย
  2. ไปที่ Build Phases
  3. ไปที่แหล่งรวบรวม
  4. ลบไฟล์ที่ซ้ำกัน

โอ้พระเจ้านี่เป็นกรณีของฉันขอบคุณมาก! ตอนนี้ผมเป็นหนี้คุณ 4 ชั่วโมงของชีวิตและเบียร์ :) ของฉัน
มิโรสลาฟ

1
คุณยินดีต้อนรับ แต่ไม่ขอบคุณฉันไม่ดื่ม :) การเข้ารหัสที่มีความสุข
J. Goce

เพิ่มสองถึงสามชั่วโมงให้มากขึ้น
CJ_COIMBRA

ทำงานให้ฉัน! ขอบคุณ!
redolent

15

ขั้นตอนต่อไปนี้แก้ไขปัญหาให้ฉันได้

  1. ไปที่การสร้างเฟสในการตั้งค่าเป้าหมาย
  2. ไปที่ "เชื่อมโยงไบนารีกับห้องสมุด"
  3. ตรวจสอบว่ามีไลบรารีใด ๆ อยู่สองครั้งหรือไม่
  4. สร้างใหม่อีกครั้ง

13

ลบ -ObjC จาก Other Linker Flags หรือโปรดตรวจสอบว่าคุณได้นำเข้าไฟล์. m ใด ๆ แทน. h โดยไม่ได้ตั้งใจ


1
เฮ้ทุกคนที่ยังสงสัยว่าทำไมแฟล็ก -ObjC ใช้งานไม่ได้ให้ใส่ใจกับคำตอบนี้ ฉันคิดผิดอย่างถ่องแท้ -ObjC flag ไม่สามารถใช้งานได้ในกรณี "พิเศษสุด" ของฉัน หลังจากค้นหาโครงการเพื่อดูอย่างที่.m"ฉันสังเกตเห็นว่าฉันได้นำเข้าไฟล์. m แทน. h และหลังจากแก้ไขว่ามันใช้งานได้! Talk is cheap, show me the code!ไชโย!
bgplaya

9

สถานการณ์ของฉันกับโครงการดั้งเดิมที่เปิดใน Xcode 7.3 คือ:

duplicate symbol _SomeEnumState in:

ตามด้วยรายการของไฟล์ที่ไม่เกี่ยวข้องสองไฟล์แล้วก็ซ้ำสองครั้งแล้วในที่สุด:

ld: 8 duplicate symbols for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

สิ่งที่แก้ไขได้สำหรับฉันคือเปลี่ยนการประกาศ enum จาก:

enum SomeEnumState {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
} SomeEnumState;

สำหรับสิ่งนี้:

typedef NS_ENUM(NSUInteger, SomeEnumState) {
    SomeEnumStateActive = 0,
    SomeEnumStateUsed = 1,
    SomeEnumStateHidden = 2
};

หากใครบางคนมีคำอธิบายสำหรับเรื่องนี้โปรดให้ความกระจ่างฉัน


สิ่งเดียวกันแก้ไขให้ฉันเมื่อฉันเปลี่ยน enum เพื่อ typedef NS_ENUM มันแก้ไขข้อผิดพลาดสัญลักษณ์ที่ซ้ำกัน
Mark24x7

9

การนิยามตัวแปรเดียวกันภายใต้ @implementation ในมากกว่าหนึ่งคลาสอาจทำให้เกิดปัญหานี้ได้


แต่ทำไม เกิดขึ้นกับฉันด้วยฟังก์ชั่น C ธรรมดาที่มีชื่อเดียวกัน
vib

9

ในกรณีของฉันมีไฟล์สองไฟล์ชื่อเดียวกันในตำแหน่งที่ตั้ง

เป้าหมาย> สร้างเฟส> รวบรวมแหล่งและลบไฟล์ที่ซ้ำกัน


8
  • ไปที่เป้าหมาย
  • เลือกการตั้งค่าการสร้าง
  • ค้นหา"ไม่มีบล็อกทั่วไป"เลือกที่จะไม่

มันใช้งานได้สำหรับฉัน


7

ฉันประสบปัญหานี้หลังจากติดตั้ง Cocoapods ตอนนี้เกิดขึ้นทุกครั้งที่ฉันอัพเดทพ็อด วิธีแก้ปัญหาที่ฉันพบ:

ไปที่เทอร์มินัล:

1) pod deintegrate
2) pod install

นอกจากนี้ให้ตรวจสอบรายการ "Always Embed Libraries Swift" ในการตั้งค่า Build ของคุณ ควรเป็น "จาง" ซึ่งระบุว่ากำลังใช้การกำหนดค่าเริ่มต้น หากตั้งค่าเป็น YES ด้วยตนเองให้กด Delete เพื่อลบมันกลับเป็นการตั้งค่าเริ่มต้น สิ่งนี้หยุดพฤติกรรม


สิ่งนี้ใช้ได้สำหรับฉัน อย่างไรก็ตาม "Always Embed Swift Libraries" ถูกตั้งค่าเป็น NO ฉันเปลี่ยนเป็น YES จากนั้นกดปุ่ม delete แล้วเรียกใช้ฟังก์ชั่นพ็อดตามที่ระบุไว้ด้านบน
BVB09

5

สำหรับฉันในระหว่างการตั้งค่าโปรเจ็กต์ Xcode8 ที่แนะนำให้อัพเดต "No Blocks สามัญ" เป็น YES ซึ่งทำให้เกิดปัญหานี้


เหมือนกันที่นี่สำหรับ Xcode8.2.1 เมื่อนำไปใช้กับโครงการเก่า
onekiloparsec

นี้แก้ไขใน XCode 11.3.1 เกินไป
LowFieldTheory

5

วันนี้ฉันได้รับข้อผิดพลาดเดียวกัน duplicateคำสำคัญที่ผิดพลาดคือ ฉันแก้ไขโดย:

1. Remove the duplicate file at Build Phases-->Compile Sources
2. If you can not remove it at Build Phases, you need find the file at your project and remove the reference by DELETE :

ลบการอ้างอิง

3. Add the file to your project again
4. Add the file's .m to your Build Phases-->Compile Sources again
5. Build your project, the error will disappear

ขอบคุณ! ในกรณีของฉันฉันรวบรวม main.m สองอันที่หนึ่งคือการอ้างอิงเก่า ปัญหานี้เกิดจากการลากและวาง
ตอง

4

ตรวจสอบให้แน่ใจว่าคุณไม่ได้นำเข้าไฟล์. m โดยไม่ตั้งใจคุณอาจต้องการลบข้อมูลที่ได้รับในหน้าต่างโครงการแล้วสร้างและเรียกใช้อีกครั้ง


4

สำหรับคนอื่นที่มีปัญหานี้ฉันไม่เห็นความละเอียดในคำตอบเหล่านี้

หลังจากมีความขัดแย้งผสาน. pbxproj ซึ่งได้รับการแก้ไขด้วยตนเอง (แม้ว่าจะไม่ดี) ก็มีการอ้างอิงซ้ำกับไฟล์คลาสแต่ละไฟล์ใน. pbxproj การลบสิ่งเหล่านั้นออกจากโครงการ> สร้างเฟส> รวบรวมแหล่งที่มาแก้ไขทุกอย่างให้ฉัน

หวังว่าสิ่งนี้จะช่วยให้ใครบางคนลงบรรทัด


ยังมีการรวมความขัดแย้งและต้องแก้ไขด้วยตนเองในไฟล์ pbxproj ld: X duplicate symbols for architecture x86_64จบลงด้วย แก้ไขได้โดยการลบไฟล์ต้นฉบับที่กล่าวถึงในข้อความข้อผิดพลาดและเพิ่มอีกครั้งในโครงการ
kas-kad

4

คล้ายกับ Juice007 ฉันได้ประกาศและเริ่มต้นตัวแปร C ชนิดในไฟล์. m ที่แตกต่างกันสองไฟล์ (ที่ไม่ได้นำเข้า!)

BOOL myVar = NO;

อย่างไรก็ตามวิธีการในการประกาศและเริ่มต้นตัวแปรนี้แม้ใน. m แม้ใน @implementation ถือเป็นขอบเขตทั่วโลก ตัวเลือกของคุณคือ:

  1. ประกาศเป็นแบบคงที่เพื่อ จำกัด ขอบเขตการเรียน:

    static BOOL myVar = NO;
  2. ลบการเริ่มต้น (ซึ่งจะทำให้ทั้งสองเรียนแบ่งปัน var ทั่วโลก):

    BOOL myVar;
    -(void) init{
        myVar = NO;
    }
  3. ประกาศเป็นคุณสมบัติ:

    @property BOOL myVar;
  4. ประกาศว่าเป็น iVar ที่เหมาะสมใน @interface

    @interface myClass(){
        BOOL myVar;
    }
    @end

4

ในกรณีของฉันฉันมีสองmain()วิธีที่กำหนดไว้ในโครงการของฉันและลบหนึ่งแก้ไขปัญหา


มีปัญหาเดียวกันที่นี่ โพสต์ของคุณช่วยฉัน ขอบคุณ!
Baran Emre

3

เมื่อเร็ว ๆ นี้มีอาการปวดหัวมองหาแหล่งที่มาของข้อผิดพลาด ฉันสงสัยว่าเมื่อฉันพบว่าแอปของฉันไม่ต้องการรวบรวมเพียงเพราะฉันมีข้อมูลรหัสต่อไปนี้ในชั้นเรียนที่แตกต่างกัน:

dispatch_time_t getDispatchTimeByDate(NSDate *date)
{
    NSTimeInterval interval;
    double second, subsecond;
    struct timespec time;
    dispatch_time_t milestone;


    interval = [date timeIntervalSince1970];
    subsecond = modf(interval, &second);
    time.tv_sec = second;
    time.tv_nsec = subsecond * NSEC_PER_SEC;
    milestone = dispatch_walltime(&time, 0);

    return milestone;
}

หวังว่าจะช่วยใครซักคน


ฟังก์ชั่นตัวช่วยขนาดเล็กคัดลอกโดยไม่ได้ตั้งใจมองข้ามได้ง่าย - ขอบคุณ!
Steven A. Lowe

3

ฉันหวังว่ามันจะช่วยคุณได้อย่างแน่นอน

ฉันได้รับข้อผิดพลาดเดียวกัน3 สัญลักษณ์ที่ซ้ำกันสำหรับสถาปัตยกรรม x86_64

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

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


3

ฉันได้รับข้อผิดพลาดเดียวกันเมื่อฉันเพิ่มที่เก็บข้อมูล Pod

pod 'SWRevealViewController'

สำหรับซอร์สโค้ดที่เพิ่มไว้แล้ว (SWRevealViewController) จาก gitHub ดังนั้นข้อผิดพลาดจะได้รับการแก้ไขโดยการลบซอร์สโค้ดหรือที่เก็บพ็อด

กรณีที่ 2:

ครั้งที่ 2 ข้อผิดพลาดนี้ปรากฏขึ้นเมื่อฉันประกาศค่าคงที่ในไฟล์. h

NSString * const SomeConstant  = @"SomeValue";
@interface AppDelegate : UIResponder <UIApplicationDelegate> {
...
...

กรณีที่ 2 บันทึกฉันคืนหนึ่ง ขอบคุณ!
Pankaj Yadav

3

คำตอบข้างต้นไม่ได้ผลสำหรับฉัน นี่คือวิธีที่ฉันได้รอบ:

1) ในตัวค้นหาลบโฟลเดอร์ Pods ทั้งหมดและไฟล์ Podfile.lock 2) ปิดโปรเจ็กต์ xcode 3) เรียกใช้พ็อดติดตั้งในเทอร์มินัล 4) เปิดโปรเจ็กต์ xcode เรียกใช้คำสั่ง clean build

ทำงานให้ฉันหลังจากนั้น


2

ปัญหาเดียวกันเกิดขึ้นกับฉันเมื่อฉันรวมโครงการล็อบในโครงการของฉัน

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

โครงการ lob จริงๆแล้วยังมีไฟล์ AFNetworking ดังนั้นฉันจึงลบไฟล์. m ออกจากโครงการ lob

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

ที่จริงแล้วไฟล์. m ขัดแย้งกับโครงการ POd / AFNetworking / .m ของฉัน

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


2

ใน Xcode 6.3.2 ฉันได้ตรวจสอบความเป็นไปได้ทั้งหมดเช่นด้านล่าง

1: ฉันไม่ได้นำเข้าไฟล์. m ในโครงการของฉัน

2: ลบออก-ObjCจากธงลิงเกอร์อื่น

3: นำออกทั้งหมดของฉันการสืบทอดมาข้อมูล

ฉันยังคงได้รับข้อผิดพลาดเดียวกัน ผมได้ลบข้อผิดพลาดนี้โดยการลบประกาศตัวแปรใด ๆ จาก.pchไฟล์ ในกรณีของฉันฉันได้ประกาศAppDelegateวัตถุใน.pchไฟล์ ในที่สุดฉันก็พบเหตุผลที่ทำให้เกิดข้อผิดพลาด ดังนั้นฉันจึงลบการประกาศของตัวแปรใด ๆ จากไฟล์. pch และเสน่ห์การทำงานของโครงการของฉัน


2

ข้อผิดพลาดโง่อีกอย่างที่จะทำให้เกิดข้อผิดพลาดนี้คือไฟล์ซ้ำ ฉันบังเอิญคัดลอกไฟล์บางไฟล์สองครั้ง ก่อนอื่นฉันไปที่เป้าหมาย -> สร้างเฟส -> รวบรวมแหล่งที่มา ที่นั่นฉันสังเกตเห็นบางไฟล์ในรายการนั้นสองครั้งและที่ตั้งของพวกเขา


ฉันไม่รู้ว่าทำไมมีคนลงคะแนนคุณนี่แก้ปัญหาของฉันได้
Yawar

2

ฉันยังมีข้อผิดพลาดในวันนี้นั่นเป็นเพราะฉันกำหนดค่า const ใน.mไฟล์ แต่ฉันกำหนด.mไฟล์อื่นที่รวมค่า const นี้ด้วยนั่นหมายความว่ามีค่า const สองค่าเดียวกันดังนั้นข้อผิดพลาดนี้จะปรากฏขึ้น และโซลูชันของฉันเพิ่มคำหลัก " static" หน้าค่า const เช่น:

static CGFloat const btnConunt = 9;

จากนั้นฉันก็สร้างโครงการมันจะไม่รายงานข้อผิดพลาดนี้

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