บริบทที่ไม่ถูกต้อง 0x0 ภายใต้ iOS 7.0 และระบบย่อยสลาย


218

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

ปัญหาของฉันคือฉันได้รับข้อผิดพลาดเดียวกันจากหลายฟังก์ชั่นซึ่งฉันเดาว่าจะถูกเรียกกลับจากฟังก์ชั่นที่ฉันใช้

เพื่อทำให้เรื่องแย่ลงรหัสที่แท้จริงนั้นอยู่ในกรอบงานส่วนบุคคลที่กำหนดเองซึ่งกำลังนำเข้าในโครงการอื่นและการแก้จุดบกพร่องนั้นไม่ง่ายใช่ไหม

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

: CGContextSetFillColorWithColor: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

: CGContextSetStrokeColorWithColor: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

CGContextSaveGState: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

: CGContextSetFlatness: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

: CGContextAddPath: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

: CGContextDrawPath: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

: CGContextRestoreGState: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

: CGContextGetBlendMode: บริบทที่ไม่ถูกต้อง 0x0 นี่เป็นข้อผิดพลาดร้ายแรง แอปพลิเคชั่นนี้หรือไลบรารีที่ใช้กำลังใช้บริบทที่ไม่ถูกต้องและมีส่วนทำให้ความเสถียรและความน่าเชื่อถือของระบบโดยรวมลดลง การแจ้งเตือนนี้เป็นมารยาท: โปรดแก้ไขปัญหานี้ มันจะกลายเป็นข้อผิดพลาดร้ายแรงในการอัปเดตที่จะเกิดขึ้น

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

แก้ไข # 1:ฉันสามารถเข้าถึงเฟรมเวิร์กที่ถูกอิมพอร์ต แต่ฉันไม่เห็นสิ่งแปลก ๆ ในคลาสที่ทำให้เกิดปัญหา

แก้ไข # 2:ฉันเพิ่งได้รับอีเมลที่ iOS 7.1 เปิดตัวสำหรับนักพัฒนา ฉันอยากรู้ว่ามันจะหายไปหรือแย่ลงหรือสามารถแก้ไขได้


8
เราได้รับข้อผิดพลาดเดียวกันนี้ในแอพของเรา - จากกล่องข้อความมาตรฐานในแบบฟอร์ม หากคุณแตะที่กล่องข้อความหลายครั้งในขณะที่แป้นพิมพ์กำลังแสดงคุณจะได้รับข้อผิดพลาดนี้ปรากฏขึ้น

กันที่นี่ บางครั้งมีการบันทึกหลายร้อยรายการบางครั้งก็เป็นศูนย์ ฉันคิดว่ามันเป็นเพราะฉันเอาชนะ drawRect: แต่ดูเหมือนจะเป็นอย่างอื่น ไม่สนใจเลยตอนนี้
Krumelur

2
ฉันเพิ่งเสร็จสิ้นการสอนครั้งแรกใน developer.apple.com (คัดลอกรหัสที่แนะนำโดย Apple) และฉันได้รับข้อผิดพลาดเดียวกันนี้ อาจเป็นได้ว่าโปรแกรมเมอร์ที่มีประสบการณ์มากดูที่การสอนนั้นพวกเขาสามารถติดตามสาเหตุของปัญหานี้ได้
Antonio Sesto

1
ดูด้านล่าง (ปิดการชำระอัตโนมัติในมุมมองที่คุณใช้องค์ประกอบ UI ที่กำหนดเอง)
JuJoDi

1
ยังคงเกิดขึ้นในปี 2559 (XCode 7, iOS 9.2) แต่ก็ยังไม่มีอันตรายใด ๆ เกิดขึ้น
Hatchmaster J

คำตอบ:


162

คนอื่นจะขอให้คุณโพสต์รหัสที่คุณเข้าถึงบริบทของกราฟิกหลัก แต่ฉันสงสัยว่าเป็นปัญหา ข้อความแสดงข้อผิดพลาด 0x0 บริบทที่ไม่ถูกต้องเหล่านี้เป็นเรื่องปกติและง่ายต่อการสร้างซ้ำใน iOS 7 อันที่จริงฉันสามารถสร้างข้อผิดพลาดอีกครั้งโดยใช้สตอรีบอร์ดที่มีรหัสศูนย์ ฉันลาก UITextField ไปยังผืนผ้าใบใน IB รันแอพแล้วแตะสองครั้งภายในช่องข้อความ

ในหลาย ๆ สถานการณ์มันยากสำหรับฉันที่จะใช้ข้อความแสดงข้อผิดพลาด 0x0 บริบทที่ไม่ถูกต้องอย่างจริงจัง ฉันไม่ทราบว่าสถานการณ์ของคุณรับประกันความกังวลมากขึ้นหรือไม่ (ฉันเห็นด้วยกับ Rob Napier ว่ามันคุ้มค่าที่จะตรวจสอบโดยเฉพาะถ้าคุณใช้บริบทกราฟิกอย่างชัดเจน)

ในโครงการของฉันฉันหวังว่าข้อผิดพลาดเหล่านี้หายไปอย่างน่าอัศจรรย์หลายวัน (แต่วันนั้นไม่ได้มาพร้อมกับ 7.0.3)

อัปเดต:หลังจากติดตั้ง Xcode 5.1 และกำหนดเป้าหมายเป็น iOS 7.1 ฉันไม่สามารถทำซ้ำข้อผิดพลาดได้โดยการแตะสองครั้งในช่องข้อความว่างเปล่า


10
คุณแก้ไขข้อผิดพลาด iOS 7 UITextField นี้อย่างสมบูรณ์ อย่าลืมเปิดเรดาร์ด้วย (bugreport.apple.com) แต่อย่าเร็วเกินไปที่จะคิดว่าเป็นปัญหาที่นี่ เนื่องจากเป็นมุมมองที่กำหนดเองจึงควรตรวจสอบคะแนนของ @ Rob ก่อน
Rob Napier

2
เกิดอะไรขึ้นกับฉัน .. ฉันวาง uitextfield บน IB ได้รับข้อผิดพลาดและแป้นพิมพ์ไม่ปรากฏขึ้น .. มีวิธีแก้ปัญหาหรือไม่? ขอบคุณ
Frade

@Frade สำหรับฉันแป้นพิมพ์จะปรากฏขึ้นและแอปทำงานตามปกติแม้จะมีข้อความแสดงข้อผิดพลาดที่เข้มงวด ดังนั้นคุณอาจมีปัญหาเพิ่มเติม
bilobatum

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

1
ขอบคุณที่ฉันคิดว่ามันเป็นแอพของฉันที่ผิด! คุณพูดถูก มันเป็นการดับเบิลคลิกในช่องข้อความที่ทำให้เกิดข้อผิดพลาดนี้เช่นกัน
Ash

201

หากคุณอยากรู้ว่ารหัสที่เป็นสาเหตุของบันทึกเหล่านี้คุณสามารถเพิ่มจุดพักสัญลักษณ์CGPostErrorบน


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

10
Votin 'นี้เพราะแม้ว่าจะไม่ใช่วิธีแก้ปัญหาในกรณีนี้มันจะเน้นที่ความผิดอยู่เมื่อมันอยู่ในขอบเขตของรหัสของโปรแกรมเมอร์
Ash

27
นี่คือข้อเสนอแนะที่ดี สำหรับผู้ที่ไม่คุ้นเคยกับจุดพักแบบสัญลักษณ์หรือวิธีเพิ่มใน Xcode นี่คือเอกสารของ Apple เกี่ยวกับเรื่องนี้ developer.apple.com/library/ios/recipes/…
Tony Adams

สิ่งนี้ช่วยฉัน ในกรณีของฉันมันเน้นการเพิ่ม NSGradient ของฉันไปยังมุมมองบนแอป OS X ของฉัน
Aaron Vegh

1
ดูเหมือนว่าฉันกำลังวาดภาพก่อนที่จะตั้งค่าเฟรมสำหรับมุมมองที่แน่นอนขอบคุณ! :)
Rick van der Linde

42

ข้อผิดพลาดประเภทต่างๆเหล่านี้ในอดีตเป็นผลมาจากการเรียกฟังก์ชั่นคอร์กราฟิกส์เมื่อไม่ได้อยู่ในบริบทที่สร้างขึ้นภายในdrawRectหรือระหว่างการโทรเช่นUIGraphicsBeginImageContextและUIGraphicsEndImageContext(หรือฟังก์ชั่น UIKit อื่น ๆ เช่นสิ่งที่เริ่มต้นและสิ้นสุดบริบท)

แม้ว่าจะบอกว่า bilobatum นั้นถูกต้องแล้วว่าข้อผิดพลาดตามลำดับนี้อาจเป็นผลมาจากข้อผิดพลาด iOS 7 ที่เขาอ้างถึงในคำตอบของเขา หากไม่เห็นข้อผิดพลาดเหล่านี้ในเป้าหมาย iOS6 ของคุณหรือหลังจากการสแกนเฟรมเวิร์กส่วนบุคคลนี้อย่างรวดเร็วคุณไม่พบการเรียกคอร์กราฟิกหลักใด ๆ อาจเป็นข้อบกพร่องของ iOS 7 นี้ เยี่ยมมาก bilobatum!


ฉันมีมุมมองในกรอบงานส่วนตัวที่เรียก drawRect ในขณะที่ฉันไม่ได้เรียกวิธีการใด ๆ ที่กล่าวมาโดยตรงข้อสันนิษฐานเดียวของฉันคือรหัสในชั้นเรียนนั้นมีความสัมพันธ์กัน ทุกอย่างทำงานได้อย่างราบรื่นภายใต้ iOS ก่อนหน้านี้
Ælex

เพื่อความสมบูรณ์ (นี่คือผลการค้นหาอันดับต้น ๆ ของ Google) ฉันต้องการทราบว่าข้อผิดพลาดลับๆไม่เปลี่ยนแปลงใน OSX 10.11.3 - และเกิดขึ้นตามที่ Rob พูดโดยมีฟังก์ชั่นการวาดนอก drawRect หรือบริบทอื่น - ฟังก์ชั่นที่เกี่ยวข้อง
green_knight

26
UIGraphicsBeginImageContext( size );
CGContextRef context = UIGraphicsGetCurrentContext();

ตรวจสอบให้แน่ใจว่าขนาดความกว้างหรือขนาดความสูงไม่ใช่ 0

คุณสามารถเพิ่มสัญลักษณ์เบรกพอยต์สัญลักษณ์เพื่อ CGPostError เพื่อตรวจสอบ


ดังนั้น…เพิ่มเบรกพอยต์สัญลักษณ์ที่ CGPostError เราจะดูขนาดที่จุดนั้นได้อย่างไร
Cris

คุณสามารถดูฟังก์ชั่นการโทรสแต็คใน "แสดงการนำทางดีบั๊ก" โดยคำสั่ง + 6 จากนั้นคุณคลิกที่ต้นไม้จากนั้นคุณสามารถกลับไปที่ฟังก์ชั่นของคุณเพื่อดูตัวแปร
lbsweek

ใช่ฉันกำลังส่ง imageview เพื่อทำให้ภาพในมุมมองเป็นวงกลม แต่พบว่าขนาดของภาพนั้นเป็นศูนย์ ในที่สุดได้รับการแก้ไขหลังจาก 2 วัน: D
JiteshW

19

ฉันมีปัญหานี้กับ UITextField อย่างง่าย (คีย์บอร์ดไม่แสดงขึ้นและข้อความแสดงข้อผิดพลาดบริบทที่ไม่ถูกต้องแตกต่างกันมากมายบนคอนโซล) ฉันเพิ่งพบวิธีแก้ปัญหาโดยดูที่ปัญหาอื่นใน SO: ไม่พบไฟล์ปฏิบัติการสำหรับ CFBundle CertUIFramework.axbundle

แค่ทำ:

คลิกที่ iOS Simulator> รีเซ็ตเนื้อหาและการตั้งค่า ... และเรียกใช้อีกครั้ง

ปัญหาไม่ควรอยู่ที่นั่นอีกต่อไป


16

ในกรณีของฉันฉันพบข้อผิดพลาดในรหัสนี้:

CAShapeLayer *shapeLayer = [CAShapeLayer layer];
UIBezierPath *path;

path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(0, 0)];
[path addLineToPoint:CGPointMake(size*2, 0)];
[path addLineToPoint:CGPointMake(size, size*2)];
[path closePath];
[path fill];

shapeLayer.path = path.CGPath;
shapeLayer.strokeColor = [[UIColor blackColor] CGColor];
shapeLayer.fillColor = color;
shapeLayer.lineWidth = width;

[self addSublayer:shapeLayer];

หลังจากความคิดและทดสอบฉันตรวจพบปัญหา - เป็นสายนี้:

[path fill];

ตามที่ฉันตรวจพบ - ในรหัสของฉันการโทรนี้ไม่จำเป็นเพราะการเติมจะกระทำโดยวิธีอื่น - ดังนั้นฉันจึงลบออก


5

ฉันมีปัญหาเดียวกันนี้และฉันลืมที่จะนำเข้า QuartzCore / QuartzCore.h สิ่งนี้แก้ไขปัญหาของฉันด้วยข้อผิดพลาดเหล่านี้

    #import <QuartzCore/QuartzCore.h>

5

คำตอบที่ตรง: ปัญหาเพราะคุณใช้องค์ประกอบกราฟิกหลักเช่น CGContext ฯลฯ ใน- (void)drawRect:(CGRect)rectวิธีอื่นนอกเหนือจากนี้

ตอนนี้กรุณาย้ายรหัสของคุณเป็นวิธีนี้ และมันจะปลุกสายให้คุณเตือน / ข้อผิดพลาด


4

ฉันได้รับข้อผิดพลาดนี้เนื่องจากฉันใช้วัตถุ UIColor เป็นแอตทริบิวต์ในพจนานุกรม NSAttributedString ที่ใช้ในวัตถุ CATextLayer ฉันเปลี่ยนพจนานุกรมเพื่อถือ CGColorRef และข้อผิดพลาดหายไป

[wordAttributes setObject:(id)[UIColor whiteColor].CGColor forKey:(NSString*)kCTForegroundColorAttributeName];

2

ฉันมีกรณีที่บริบทกลับมาจากการUIGraphicsGetCurrentContext()มีNULLและถ้าคุณพยายามที่จะใช้มันเพื่ออะไรปรากฏข้อความนี้ เป็นความรับผิดชอบของมุมมองในการพุชบริบทที่ใช้UIGraphicsPushContextก่อนการโทรdrawRect:หากคุณโทรdrawRect:โดยตรงแทนที่จะ[view setNeedsDisplay]เสี่ยงกับบริบทที่ยังไม่ได้ตั้งค่า ลางสังหรณ์ของฉันคือก่อนหน้า iOS 7 บริบทถูกผลักดันเพื่อให้ดูinitและตอนนี้บน iOS 7 บริบทจะไม่ถูกผลักจนกว่าdrawRect:จะมีการเรียกครั้งแรก ฉันสงสัยว่ารหัส UIKit บางตัวกำลังโทรdrawRect:โดยตรงและนี่คือสาเหตุที่มีปัญหากับรหัสบางอย่างแม้ว่าจะไม่มีการวาดรูปแบบกำหนดเอง

วิธีแก้ปัญหา (ถ้าทำการวาดรูปแบบกำหนดเอง):

  1. อย่าโทรdrawRect:โดยตรงใช้[view setNeedsDisplay]หรือถ้าคุณต้องการใช้รูปวาดทันที[view.layer draw]
  2. ในdrawRect:บริบทของคุณจะได้รับ แต่อย่าใช้มันนอกเนื้อหาของคำสั่ง ifif (context) {<do drawing here>}

2

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



2

ฉันได้รับข้อผิดพลาดนี้ในวิธี drawInContext (.. ) ของการใช้งาน CALayer ที่กำหนดเองของฉัน UIBezierPath พยายามใช้ UIGraphicsGetCurrentContext () ซึ่งเป็นศูนย์โดยค่าเริ่มต้นในเลเยอร์ที่กำหนดเอง เอกสารออนไลน์อธิบายนี้อย่างชัดเจน -

หากคุณไม่ได้ใช้วัตถุ UIView ในการวาดรูปคุณต้องกดบริบทที่ถูกต้องลงบนสแต็กด้วยตนเองโดยใช้ฟังก์ชัน UIGraphicsPushContext

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

override func drawInContext(ctx: CGContext!) {  
    var path = UIBezierPath()

    // 1. Make sure you push the CGContext that was first passed into you.
    UIGraphicsPushContext(ctx)
    path.moveToPoint(CGPoint(x: 0, y: 0))
    path.addLineToPoint(CGPoint(x: 150, y: 150))
    var lineColor = UIColor.blueColor()
    lineColor.setStroke()
    path.lineWidth = 2
    path.stroke(
    // 2. Pop the context after you are done.
    UIGraphicsPopContext()
}

2

ในกรณีของฉันฉันมีคำเตือนนี้เมื่อสร้างภาพที่มีความยืดหยุ่นพร้อมฝาปิดแบบฝัง ปัญหาคือว่าฉันไม่ได้ออกอย่างน้อย 1 พิกเซลในพื้นที่ "uncapped"

    UIImage *image = [UIImage imageNamed:@"name"];
    UIEdgeInsets edgeInsets = UIEdgeInsetsMake(20, 10, 20, 10);  //Problem here if the width is 20 or the height is 40
    image = [image resizableImageWithCapInsets:edgeInsets];

1
มีปัญหาเดียวกัน เห็นได้ชัดว่าคุณต้องออกจากพื้นที่อย่างน้อย 1 จุดที่ภาพสามารถยืดได้
ribeto

1

ฉันกำลังสร้าง UIImage จากบริบทโดยใช้โค้ดด้านล่าง:

    UIGraphicsBeginImageContext (ขนาด);
    บริบท CGContextRef = UIGraphicsGetCurrentContext ();

    CGContextSetFillColorWithColor (บริบท, color.CGColor);
    CGContextFillRect (บริบท (CGRect) {. size = size});

    UIImage * image = UIGraphicsGetImageFromCurrentImageContext ();
    UIGraphicsEndImageContext ();

ดังนั้นฉันได้รับข้อผิดพลาด

ดังนั้นฉันจึงลบเนื้อหาที่ได้รับข้อมูลรีสตาร์ท XCode ของฉัน และมันก็ใช้งานได้


การแก้ปัญหาคืออะไร?
Geek

1
@Geek โซลูชันที่อัปเดตแล้ว ลบเนื้อหา DerivedData และรีสตาร์ท
พบ

1

ผมมีปัญหาเดียวกัน. ในโครงการของฉันฉันพยายามสร้างฟิลด์ข้อความและเพิ่มลงในไฟล์ pdf ของฉัน รหัสเก่า:

- (void) drawInContext:(CGContextRef)context {
    //Otherwise we're upside-down
    CGContextSetTextMatrix(context, CGAffineTransformMake(1.0,0.0, 0.0, -1.0, 0.0, 0.0));

    CGContextSetTextDrawingMode(context, kCGTextFill); // This is the default
    [[UIColor blackColor] setFill]; // ***This is the problem ***

    CGFloat x = self.rect.origin.x;
    CGFloat y = self.rect.origin.y + self.font.pointSize;
    [self.text drawAtPoint:CGPointMake(x, y)
            withAttributes:@{NSFontAttributeName:[UIFont fontWithName:@"Arial" size:12]}];
}

หลังจากแก้ไขปัญหานี้แล้วโค้ดก็เปลี่ยนไป:

old:[[UIColor blackColor] setFill]; 

new:CGContextSetFillColorWithColor(context, [[UIColor blackColor] CGColor]);

ผมพบว่าวิธีการแก้ปัญหาที่UIColor SetFill ไม่ทำงาน และขอขอบคุณผู้ช่วย


1

ฉันได้รับรหัสข้อผิดพลาด

UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:pointA];
[path addLineToPoint:pointB];
[path addLineToPoint:pointC];
[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];
[path closePath];

CAShapeLayer *triangle = [CAShapeLayer layer];
triangle.fillColor = [UIColor colorWithHexString:@"EFEFEF"].CGColor;
triangle.path = path.CGPath;

return triangle;

และหลังจากลบรหัส

[[UIColor colorWithHexString:@"EFEFEF"] set];
[path fill];

โลกเริ่มนิ่งเงียบ



0

รับข้อผิดพลาดนี้ตามที่ฉันตั้งไว้

textfield.delegate = self

โดยไม่ต้องใช้รูทีนของผู้รับมอบสิทธิ์ใด ๆ การลบบรรทัดนั้นช่วยแก้ปัญหาให้ฉันได้


0

ฉันมีปัญหานี้ใน UITextField เมื่อฉันแตะที่ช่องว่างที่มีข้อความตัวยึด ฉันใช้วิธีแก้ไขต่อไปนี้เพื่อกำจัดฟิลด์ว่าง:

-(void)textFieldDidBeginEditing:(UITextField *)textField{

        textField.text=[@" " stringByAppendingString:textField.text];

        //other stuff here
}


-(BOOL)textFieldShouldReturn:(UITextField *)textField{

         if(textField.text.length>0){
             if([[textField.text substringToIndex:1] isEqualToString:@" "])
                 textField.text=[textField.text substringFromIndex:1];
         }
         //  other stuff here
}

0

สำหรับฉันฉันได้รับข้อผิดพลาดนี้เพราะฉันปล่อย CGContextRef ดังที่แสดงด้านล่าง:

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();

    // DRAW BACKGROUND CIRCLE
    CGContextSetFillColorWithColor(context, [[UIColor gray] colorWithAlphaComponent:0.6].CGColor);
    CGContextFillEllipseInRect(context, rect);

//    CGContextRelease(context);
}

การลบการเปิดตัวแก้ไขปัญหาได้


0

ฉันได้รับมันเมื่อฉันพิมพ์ชื่อภาพในวิธีกิจกรรม ActivityImage ในคลาสย่อย UIActivity

- (UIImage *)activityImage
{
    return [UIImage imageNamed:@"img.png"];
}

การพิมพ์ภาพที่ถูกต้องช่วยแก้ปัญหาให้ฉันได้


0

ถอนการติดตั้งแอพจากเครื่องมือจำลองและเรียกใช้อีกครั้ง


0

เช่นเดียวกับคนอื่น ๆ ที่แสดงความคิดเห็นที่นี่ฉันได้รับคำเตือนนี้เมื่อฉันทำสิ่งใดสิ่งหนึ่งต่อไปนี้:

บนช่องข้อความเปล่า: การแตะสองครั้งแตะค้างไว้แตะครั้งเดียวนาน ๆ

ดูเหมือนว่าจะส่งผลกระทบต่อ iOS 7.0.3 เท่านั้น

ฉันค้นพบวิธีแก้ปัญหาคำเตือนจะไม่ถูกเรียกใช้หากกระดาษชำระของคุณไม่ใช่ NULL

ดังนั้นฉันจึงทำสิ่งต่อไปนี้ใน textFieldDidBeginEditing:

- (void)textFieldDidBeginEditing:(UITextField *)textField {

    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    if (pasteboard.string.length == 0) {

        pasteboard.string = @" ";

    }
}

ฉันทดสอบสิ่งนี้ในโปรแกรมจำลองสำหรับ iOS 7.0.3 บน iphone 4s, 5 และ 5s และไม่ได้รับคำเตือนอีกต่อไป ฉันยังทดสอบสิ่งนี้ในโปรแกรมจำลองสำหรับ iOS 8 บน iphone 6 และ 6 บวกด้วย แต่ฉันไม่เชื่อว่า iOS 8 จะได้รับผลกระทบ

เดินผ่านสองวันแห่งความขุ่นมัวก่อนที่จะค้นพบงานนี้ดังนั้นฉันหวังว่าคำตอบของฉันจะช่วยพวกคุณที่มีปัญหาเดียวกัน


0

หากข้อผิดพลาดเกิดขึ้นเมื่อคุณใช้ UIBezierPath และตั้งค่าสีสำหรับการลากเส้นหรือเติมให้ใส่รหัสสีที่ตั้งไว้ในฟังก์ชัน drawRect แทนตำแหน่งอื่น


0

นี่มันแฮ็ก แต่มันใช้ได้สำหรับฉัน

ฉันตั้งค่าUIImageViewในUITableViewCellของinitให้ขนาดและข้อ จำกัด

จากนั้นในตัวควบคุมมุมมองของcellForRowAtIndexPathฉันฉันทำสิ่งนี้:

let img = PFImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
img.setImage(withFile: nil, defaultText: message.senderUsername)
cell.profileImageView?.image = img.image

และนั่นก็เพื่อหลีกเลี่ยงข้อผิดพลาดจากนั้นด้านล่างในฟังก์ชั่นที่ฉันตั้งค่ารูปภาพจริงสำหรับสิ่งUIImageViewนั้น รหัสข้างต้นเป็นค่าเริ่มต้นที่ดี

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