คำถามติดแท็ก objective-c

แท็กนี้ควรใช้กับคำถามที่เกี่ยวกับคุณสมบัติ Objective-C หรือขึ้นอยู่กับรหัสในภาษา ควรใช้แท็ก [cocoa] และ [cocoa-touch] เพื่อสอบถามเกี่ยวกับกรอบหรือคลาสของ Apple ใช้แท็กที่เกี่ยวข้อง [ios], [macos], [apple-watch] และ [tvos] สำหรับปัญหาเฉพาะของแพลตฟอร์มเหล่านั้น

30
วิธีการเปลี่ยนสีพื้นหลังของ UIButton ในขณะที่มันถูกเน้นสี?
ในบางจุดในแอพของฉันฉันมีการเน้นUIButton(ตัวอย่างเช่นเมื่อผู้ใช้มีนิ้วของเขาที่ปุ่ม) และฉันจำเป็นต้องเปลี่ยนสีพื้นหลังในขณะที่ปุ่มถูกเน้น (ดังนั้นในขณะที่นิ้วของผู้ใช้ยังคงอยู่บนปุ่ม) . ฉันพยายามต่อไปนี้: _button.backgroundColor = [UIColor redColor]; แต่มันไม่ทำงาน สียังคงเหมือนเดิม ฉันลองใช้โค้ดชิ้นเดียวกันเมื่อปุ่มไม่ได้ถูกไฮไลต์และทำงานได้ดี ฉันลองโทร-setNeedsDisplayหลังจากเปลี่ยนสีแล้วมันไม่มีผลอะไรเลย จะบังคับให้ปุ่มเปลี่ยนสีพื้นหลังได้อย่างไร?

5
การรั่วไหลของชนิดใดที่การอ้างอิงอัตโนมัติใน Objective-C ไม่ป้องกันหรือย่อให้เล็กสุด
ในแพลตฟอร์ม Mac และ iOS หน่วยความจำรั่วมักเกิดจากพอยน์เตอร์ที่ไม่ได้เผยแพร่ ตามเนื้อผ้ามันมีความสำคัญสูงสุดเสมอในการตรวจสอบ allocs ของคุณคัดลอกและเก็บเพื่อให้แน่ใจว่าแต่ละคนมีข้อความปล่อยที่สอดคล้องกัน Toolchain ที่มาพร้อมกับ Xcode 4.2 แนะนำการนับจำนวนการอ้างอิงอัตโนมัติ (ARC) ด้วยตัวแปล LLVMเวอร์ชั่นล่าสุดซึ่งแก้ไขปัญหานี้ได้อย่างสมบูรณ์ มันเจ๋งมากและมันช่วยลดเวลาในการพัฒนาที่ไม่จำเป็นออกไปทางโลกและป้องกันการรั่วไหลของหน่วยความจำที่ไม่ประมาทจำนวนมากซึ่งง่ายต่อการแก้ไขด้วยการรักษา / ปล่อยสมดุลที่เหมาะสม แม้กระทั่งระบบพูลอัตโนมัติที่ต้องจัดการแตกต่างกันเมื่อคุณเปิดใช้งาน ARC สำหรับแอป Mac และ iOS (เพราะคุณไม่ควรจัดสรรNSAutoreleasePoolอีกต่อไป) แต่การรั่วไหลของหน่วยความจำอื่น ๆมันไม่ได้ป้องกันไม่ให้ฉันยังต้องระวัง? เป็นโบนัสอะไรคือความแตกต่างระหว่าง ARC บน Mac OS X และ iOS และการเก็บขยะบน Mac OS X


8
อันตรายจากวิธีการที่สั่นคลอนใน Objective-C คืออะไร
ฉันเคยได้ยินผู้คนกล่าวว่าวิธีการวกวนเป็นวิธีที่อันตราย แม้แต่ชื่อที่สั่นคลอนก็แสดงให้เห็นว่ามันเป็นการโกง เมธอด Swizzlingกำลังแก้ไขการแม็พดังนั้นการเรียกตัวเลือก A จริง ๆ แล้วจะเรียกใช้งานบีหนึ่งในการใช้สิ่งนี้คือการขยายพฤติกรรมของคลาสที่มาปิด เราสามารถทำตามความเสี่ยงให้เป็นรูปธรรมได้เพื่อให้ทุกคนที่กำลังตัดสินใจว่าจะใช้การ swizzling สามารถทำการตัดสินใจอย่างมีข้อมูลว่าคุ้มค่ากับสิ่งที่พวกเขาพยายามทำหรือไม่ เช่น การตั้งชื่อการชน : ถ้าชั้นเรียนขยายการทำงานในภายหลังเพื่อรวมชื่อวิธีการที่คุณเพิ่มไว้มันจะทำให้เกิดปัญหาอย่างใหญ่หลวง ลดความเสี่ยงด้วยวิธีการตั้งชื่อแบบ swizzled อย่างสมเหตุสมผล

11
สีข้อความและลูกศรของแถบการนำทาง IOS 7
ฉันต้องการที่จะตั้งพื้นหลังป้ายจะเป็นสีดำและสีทั้งหมดภายในมันจะเป็นสีขาว ดังนั้นฉันใช้รหัสนี้: [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor whiteColor], NSForegroundColorAttributeName, [UIColor whiteColor], NSForegroundColorAttributeName, [NSValue valueWithUIOffset:UIOffsetMake(0, -1)], NSForegroundColorAttributeName, [UIFont fontWithName:@"Arial-Bold" size:0.0], NSFontAttributeName, nil]]; แต่ปุ่มย้อนกลับสีข้อความ , ลูกศรและปุ่มแถบได้ยังคงเริ่มต้นสีฟ้า วิธีการเปลี่ยนสีเหล่านั้นเหมือนในภาพด้านล่าง?

3
ทำความเข้าใจกับ dispatch_async
ฉันมีคำถามเกี่ยวกับรหัสนี้ dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSData* data = [NSData dataWithContentsOfURL: kLatestKivaLoansURL]; [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES]; }); พารามิเตอร์แรกของรหัสนี้คือ dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) เรากำลังขอรหัสนี้เพื่อทำงานแบบอนุกรมในคิวทั่วโลกที่มีความหมายว่ามันจะส่งกลับพร้อมกันทั่วโลกคิวในระดับความสำคัญที่กำหนด? อะไรคือข้อดีของการใช้dispatch_get_global_queueคิวหลัก? ฉันสับสน. คุณช่วยฉันเข้าใจเรื่องนี้ให้ดีขึ้นได้ไหม

19
ฉันจะเข้ารหัส base64 บน iOS ได้อย่างไร
ฉันต้องการที่จะทำbase64การเข้ารหัสและถอดรหัส แต่ฉันไม่สามารถหาการสนับสนุนใด ๆ จาก SDKiPhone ฉันจะbase64เข้ารหัสและถอดรหัสโดยมีหรือไม่มีห้องสมุดได้อย่างไร
230 ios  objective-c  base64 

13
Objective-C สำหรับ Windows
อะไรจะเป็นวิธีที่ดีที่สุดในการเขียน Objective-C บนแพลตฟอร์ม Windows Cygwin และ gcc? มีวิธีใดบ้างที่ฉันสามารถรวมเข้ากับ Visual Studio ได้ ในบรรทัดเหล่านั้น - มีคำแนะนำใด ๆ เกี่ยวกับวิธีการเชื่อมโยงและใช้ Windows SDK สำหรับสิ่งนี้ มันเป็นสัตว์ร้ายที่แตกต่างออกไป แต่ฉันรู้ว่าฉันสามารถเขียนชุดประกอบและลิงก์ใน Windows DLLs ได้ซึ่งทำให้ฉันสามารถเข้าถึงการโทรเหล่านั้นได้ แต่ฉันไม่รู้วิธีการทำเช่นนี้โดยไม่ต้องไปที่ Google มีใครทราบถึงแหล่งข้อมูลออนไลน์หรือหนังสือที่ดีที่จะทำหรืออธิบายสิ่งต่าง ๆ เหล่านี้?


9
ฉันจะใช้ NSError ในแอพ iPhone ของฉันได้อย่างไร
ฉันกำลังหาข้อผิดพลาดในแอพของฉันและฉันกำลังใช้งานNSErrorอยู่ ฉันสับสนเล็กน้อยเกี่ยวกับวิธีการใช้งานและวิธีเติมข้อมูล มีคนให้ตัวอย่างเกี่ยวกับวิธีที่ฉันเติมแล้วใช้NSError?

11
คุณสามารถแนบ UIGestureRecognizer กับหลายมุมมองได้หรือไม่?
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapTapTap:)]; [self.view1 addGestureRecognizer:tapGesture]; [self.view2 addGestureRecognizer:tapGesture]; [tapGesture release]; ในรหัสข้างต้นก๊อกเท่านั้นที่view2ได้รับการยอมรับ หากฉันใส่ความคิดเห็นในบรรทัดที่สามview1จะมีการจดจำการแตะ หากฉันพูดถูกและคุณสามารถใช้ตัวจำแนกลายมือเพียงครั้งเดียวฉันไม่แน่ใจว่านี่เป็นข้อบกพร่องหรือไม่ก็ต้องการเอกสารเพิ่มเติมอีก

20
iOS 8 การสแนปชอตมุมมองที่ไม่ได้แสดงผลเป็นสแน็ปช็อตที่ว่างเปล่า
ใน iOS 8 ฉันมีปัญหาในการจับภาพจากกล้องจนถึงตอนนี้ฉันกำลังใช้รหัสนี้สำหรับ UIImagePickerController *controller=[[UIImagePickerController alloc] init]; controller.videoQuality=UIImagePickerControllerQualityTypeMedium; controller.delegate=(id)self; controller.sourceType=UIImagePickerControllerSourceTypeCamera; [self presentViewController:controller animated:YES completion:nil]; แต่ใน iOS 8 ฉันได้รับสิ่งนี้: Snapshotting a view that has not been rendered results in an empty snapshot. Ensure your view has been rendered at least once before snapshotting or snapshot after screen updates. ฉันได้ลองด้วยวิธีการแก้ปัญหาที่โพสต์นี้ด้วย @property …

2
setNeedsLayout vs. setNeedsUpdateConstraints และ layoutIfNeeded vs updateConstraintsIfNeeded
ฉันรู้ว่าห่วงโซ่การจัดวางอัตโนมัติประกอบด้วยกระบวนการที่แตกต่างกัน 3 ประการ อัปเดตข้อ จำกัด มุมมองเค้าโครง (นี่คือที่ที่เราได้รับการคำนวณเฟรม) แสดง อะไรไม่ได้โดยสิ้นเชิงชัดเจนกับผมคือความแตกต่างระหว่างภายในและ-setNeedsLayout -setNeedsUpdateConstraintsจาก Apple Docs: setNeedsLayout เรียกวิธีนี้ในเธรดหลักของแอปพลิเคชันของคุณเมื่อคุณต้องการปรับเค้าโครงของมุมมองย่อย วิธีนี้จะทำการบันทึกคำขอและส่งคืนทันที เนื่องจากวิธีนี้ไม่ได้บังคับให้มีการอัปเดตทันที แต่รอรอบการอัปเดตครั้งต่อไปคุณสามารถใช้วิธีนี้เพื่อทำให้เค้าโครงของมุมมองหลายมุมเป็นโมฆะก่อนที่มุมมองเหล่านั้นจะได้รับการอัปเดต ลักษณะการทำงานนี้ช่วยให้คุณสามารถรวมการปรับปรุงเค้าโครงทั้งหมดของคุณเข้ากับรอบการอัปเดตเดียวซึ่งมักจะดีกว่าสำหรับประสิทธิภาพ setNeedsUpdateConstraints เมื่อคุณสมบัติของมุมมองที่กำหนดเองของคุณเปลี่ยนไปในแบบที่จะส่งผลกระทบต่อข้อ จำกัด คุณสามารถเรียกวิธีนี้เพื่อระบุว่าข้อ จำกัด จำเป็นต้องได้รับการปรับปรุงในบางจุดในอนาคต จากนั้นระบบจะเรียกใช้ updateConstraints โดยเป็นส่วนหนึ่งของเค้าโครงผังปกติ การอัปเดตข้อ จำกัด ทั้งหมดในครั้งเดียวก่อนที่จะมีความจำเป็นต้องมั่นใจว่าคุณไม่จำเป็นต้องคำนวณข้อ จำกัด โดยไม่จำเป็นเมื่อมีการเปลี่ยนแปลงหลายอย่างในมุมมองของคุณระหว่างการส่งผ่านเลย์เอาต์ เมื่อฉันต้องการทำให้มุมมองเคลื่อนไหวหลังจากแก้ไขข้อ จำกัด และทำให้การเปลี่ยนแปลงที่ฉันมักจะเรียกเช่น: [UIView animateWithDuration:1.0f delay:0.0f usingSpringWithDamping:0.5f initialSpringVelocity:1 options:UIViewAnimationOptionCurveEaseInOut animations:^{ [self.modifConstrView setNeedsUpdateConstraints]; [self.modifConstrView layoutIfNeeded]; } completion:NULL]; ฉันพบว่าถ้าฉันใช้-setNeedsLayoutแทน-setNeedsUpdateConstraintsทุกอย่างทำงานตามที่คาดไว้ แต่ถ้าฉันเปลี่ยน-layoutIfNeededด้วย-updateConstraintsIfNeededภาพเคลื่อนไหวจะไม่เกิดขึ้น …

4
มันจะเป็นประโยชน์หรือไม่ที่จะเริ่มต้นใช้อินสแตนซ์แทน id?
เสียงดังกราวเพิ่มคำหลักที่instancetypeว่าเท่าที่ผมสามารถมองเห็นแทนที่idเป็นชนิดผลตอบแทนในและ-allocinit มีประโยชน์ในการใช้instancetypeแทนidหรือไม่?


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