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

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

15
ฉันจะทำให้ UILabel แสดงข้อความที่ระบุได้อย่างไร
ทั้งหมดที่ฉันต้องการคือเส้นขอบสีดำหนึ่งพิกเซลรอบข้อความ UILabel สีขาวของฉัน ฉันได้รับ UILabel ระดับย่อยด้วยรหัสด้านล่างซึ่งฉันปูด้วยกันอย่างงุ่มง่ามจากตัวอย่างออนไลน์ที่เกี่ยวข้องกันเชิงสัมผัสสองสามตัวอย่าง และมันใช้งานได้ แต่มันช้ามาก (ยกเว้นในโปรแกรมจำลอง) และฉันไม่สามารถทำให้ข้อความอยู่กึ่งกลางในแนวตั้งได้ (ดังนั้นฉันจึงฮาร์ดโค้ดค่า y ในบรรทัดสุดท้ายชั่วคราว) อื้อหือ! void ShowStringCentered(CGContextRef gc, float x, float y, const char *str) { CGContextSetTextDrawingMode(gc, kCGTextInvisible); CGContextShowTextAtPoint(gc, 0, 0, str, strlen(str)); CGPoint pt = CGContextGetTextPosition(gc); CGContextSetTextDrawingMode(gc, kCGTextFillStroke); CGContextShowTextAtPoint(gc, x - pt.x / 2, y, str, strlen(str)); } - (void)drawRect:(CGRect)rect{ …

6
UITableView พร้อมส่วนหัวคงที่
ทักทายฉันกำลังอ่านว่าพฤติกรรมเริ่มต้นของUITableViewคือการตรึงแถวส่วนหัวของส่วนไว้ที่ด้านบนสุดของตารางเมื่อคุณเลื่อนดูส่วนต่างๆจนกระทั่งส่วนถัดไปดันแถวส่วนเหนือออกจากมุมมอง ฉันมีUITableViewภายในUIViewControllerและดูเหมือนจะไม่เป็นเช่นนั้น นั่นเป็นเพียงพฤติกรรมผิดนัดเพื่อUITableViewController? ต่อไปนี้เป็นรหัสที่เรียบง่ายตามสิ่งที่ฉันมี ฉันจะแสดงUIControllerอินเทอร์เฟซและวิธีการดูตารางแต่ละวิธีที่ฉันใช้เพื่อสร้างมุมมองตาราง ฉันมีคลาสแหล่งข้อมูลตัวช่วยที่ช่วยจัดทำดัชนีวัตถุเพื่อใช้กับตาราง @interface MyUIViewController ()<UITableViewDelegate, UITableViewDataSource> @property (nonatomic, readonly) UITableView *myTableView; @property (nonatomic, readonly) MyCustomHelperDataSource *helperDataSource; @end //when section data is set, get details for each section and reload table on success - (void)setSectionData:(NSArray *)sections { super.sectionData = sections; //this array drives the sections //get additional …

23
เรียนรู้ C ก่อนเรียนรู้ Objective-C [ปิด]
ตามที่กล่าวไว้ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบถาม & ตอบของเรา เราคาดหวังว่าคำตอบจะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้อาจก่อให้เกิดการถกเถียงโต้แย้งการสำรวจความคิดเห็นหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงได้และอาจเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อรับคำแนะนำ ปิดให้บริการใน8 ปีที่ผ่านมา ในฐานะนักพัฒนา Apple ที่ต้องการฉันต้องการรับความคิดเห็นของชุมชนว่าควรเรียนรู้ C ก่อนจะดีกว่าไหมก่อนที่จะย้ายเข้าสู่ Objective-C และท้ายที่สุด Cocoa Framework? ลำไส้ของฉันบอกว่าเรียนรู้ C ซึ่งจะทำให้ฉันมีพื้นฐานที่ดี
107 c  objective-c  cocoa 

23
ฉันจะเลื่อน UIScrollView เมื่อแป้นพิมพ์ปรากฏขึ้นได้อย่างไร
ฉันมีปัญหากับรหัสของฉัน ฉันกำลังพยายามย้ายUIScrollViewเมื่อฉันแก้ไขสิ่งUITextFieldที่ควรจะซ่อนโดยป๊อปแป้นพิมพ์ ตอนนี้ฉันกำลังย้ายเฟรมหลักเพราะฉันไม่รู้ว่าจะ "เลื่อนขึ้น" ในโค้ดอย่างไร ดังนั้นฉันทำโค้ดนิดหน่อยมันก็ใช้งานได้ดี แต่เมื่อฉันแก้ไข UItextfield และฉันเปลี่ยนไปใช้อันอื่นUITextFieldโดยไม่ต้องกดปุ่ม 'return' มุมมองหลักจะไปไกลขึ้น ฉันทำNSLog()กับตัวแปรขนาดระยะทางและ textFieldRect.origin.y ดังที่คุณเห็นด้านล่าง เมื่อฉันใส่สองตัวUITextFieldในที่เดียวกัน (จุดเริ่มต้น y) และฉันทำ 'สวิตช์' นี้โดยเฉพาะ (โดยไม่ต้องกด return) ฉันจะได้ตัวเลขเดียวกันในขณะที่รหัสของฉันทำงานได้ดีสำหรับการUITextFieldแก้ไขครั้งแรกแต่ไม่ใช่สำหรับการแก้ไขครั้งที่สอง ลองดู: - (void)textFieldDidBeginEditing:(UITextField *)textField { { int size; CGRect textFieldRect = [self.view.window convertRect:textField.bounds fromView:textField]; size = textFieldRect.origin.y + textFieldRect.size.height; if (change == FALSE) { size = size …

3
รับค่าของ UITextField เมื่อป้อนการกดแป้นพิมพ์หรือไม่
สมมติว่าฉันมีรหัสต่อไปนี้: IBOutlet UITextField* nameTextField; IBOutlet UILabel* greetingLabel; ฉันต้องการgreetingLabelให้อ่าน "สวัสดี [nameTextField]" ทันทีที่ผู้ใช้กดปุ่มใด ๆ สิ่งที่ฉันต้องการโดยทั่วไปเป็นเทียบเท่า iPhone controlTextDidChangeของวิธีการผู้รับมอบสิทธิ์โกโก้ มีtextField:shouldChangeCharactersInRange:การเรียกวิธีการมอบหมายทุกครั้งที่เกิดการกดแป้นพิมพ์: - (BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string อาร์กิวเมนต์สตริงจะส่งคืนอักขระที่ถูกกด อย่างไรก็ตามค่าจริงtextField( nameTextField.text) ยังคงว่างเปล่า ฉันพลาดอะไรไปที่นี่? (ฉันต้องการnameTextFieldแสดงสตริงที่แน่นอนที่ผู้ใช้ป้อนจนถึงตอนนี้)

11
ส่งข้อความถึงศูนย์ใน Objective-C
ในฐานะนักพัฒนา Java ที่กำลังอ่านเอกสาร Objective-C 2.0 ของ Apple: ฉันสงสัยว่า " การส่งข้อความถึงศูนย์ " หมายความว่าอย่างไร - นับประสาอะไรกับประโยชน์ที่แท้จริง การตัดตอนมาจากเอกสาร: มีหลายรูปแบบในโกโก้ที่ใช้ประโยชน์จากข้อเท็จจริงนี้ ค่าที่ส่งคืนจากข้อความถึงศูนย์อาจใช้ได้เช่นกัน: ถ้าเมธอดส่งคืนวัตถุชนิดตัวชี้ใด ๆ สเกลาร์จำนวนเต็มใด ๆ ที่มีขนาดน้อยกว่าหรือเท่ากับ sizeof (โมฆะ *) ลอยคู่คู่ยาวหรือยาวข้อความที่ส่งไปยังศูนย์จะส่งกลับ 0 . ถ้าเมธอดส่งคืนโครงสร้างตามที่กำหนดโดย MacOS X ABI Function Call Guide ที่จะส่งคืนในรีจิสเตอร์ข้อความที่ส่งไปยังศูนย์จะส่งกลับ 0.0 สำหรับทุกฟิลด์ในโครงสร้างข้อมูล ประเภทข้อมูลโครงสร้างอื่น ๆ จะไม่ถูกเติมด้วยศูนย์ ถ้าเมธอดส่งคืนสิ่งอื่นนอกเหนือจากค่าที่กล่าวมาให้พิมพ์ค่าส่งคืนของข้อความที่ส่งไปยังศูนย์จะไม่ได้กำหนด Java ทำให้สมองของฉันไม่สามารถพูดคำอธิบายข้างต้นได้หรือไม่? หรือมีบางอย่างที่ฉันขาดหายไปที่จะทำให้มันใสเหมือนแก้ว? ฉันจะได้รับความคิดของข้อความ / รับใน Objective-C nilที่ผมกำลังสับสนเพียงเกี่ยวกับการรับที่เกิดขึ้นจะเป็น
107 objective-c 

10
ฉันจะสร้างและใช้คิวใน Objective-C ได้อย่างไร
ฉันต้องการใช้โครงสร้างข้อมูลคิวในโปรแกรม Objective-C ของฉัน ใน C ++ ฉันใช้คิว STL โครงสร้างข้อมูลที่เทียบเท่าใน Objective-C คืออะไร? ฉันจะพุช / ป๊อปไอเท็มได้อย่างไร

10
เริ่มต้นตามเงื่อนไขที่ตำแหน่งต่างๆในสตอรีบอร์ดจาก AppDelegate
ฉันมีสตอรี่บอร์ดที่ตั้งค่าด้วยการเข้าสู่ระบบที่ใช้งานได้และตัวควบคุมมุมมองหลักส่วนหลังเป็นตัวควบคุมมุมมองที่ผู้ใช้จะถูกนำทางไปเมื่อการเข้าสู่ระบบสำเร็จ วัตถุประสงค์ของฉันคือแสดงตัวควบคุมมุมมองหลักทันทีหากการตรวจสอบความถูกต้อง (เก็บไว้ในพวงกุญแจ) สำเร็จและแสดงตัวควบคุมมุมมองการเข้าสู่ระบบหากการรับรองความถูกต้องล้มเหลว โดยทั่วไปฉันต้องการทำสิ่งนี้ใน AppDelegate ของฉัน: // url request & response work fine, assume success is a BOOL here // that indicates whether login was successful or not if (success) { // 'push' main view controller } else { // 'push' login view controller } ฉันรู้เกี่ยวกับวิธีการ performSegueWithIdentifier: แต่วิธีนี้เป็นวิธีการอินสแตนซ์ของ UIViewController …

2
Use-case of `oneway void` ใน Objective-C?
ฉันพบคีย์เวิร์ดแปลก ๆ ใน NSObject.h - (oneway void)release; ฉันค้นหาเว็บและเรียนรู้ว่ามันเกี่ยวข้องกับการส่งข้อความแบบอะซิงโครนัสซึ่งดูคล้ายกับการส่งข้อความของ Erlang ดูเหมือนว่าสิ่งนี้สามารถสร้างสิ่งที่น่าสนใจมากมาย คำหลักนี้มีลักษณะการใช้งานที่ดีอะไรบ้าง

8
ฉันจะแปลงจากองศาเป็นเรเดียนได้อย่างไร
ฉันกำลังพยายามแปลงObj-Cรหัสนี้เป็นSwiftรหัส แต่ฉันไม่รู้ว่ารหัสนี้ควรจะเทียบเท่ากับอะไร? #define DEGREES_TO_RADIANS(degrees)((M_PI * degrees)/180) ฉัน googled และพบสิ่งนี้ แต่ฉันไม่เข้าใจวิธีการแปลงใน Swift ในกรณีของฉัน?
107 ios  objective-c  macos  swift  macros 

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

5
การใช้ startBackgroundTaskWithExpirationHandler อย่างเหมาะสม
beginBackgroundTaskWithExpirationHandlerฉันบิตสับสนเกี่ยวกับวิธีการและเมื่อใช้ Apple แสดงให้เห็นในตัวอย่างเพื่อใช้ในการapplicationDidEnterBackgroundมอบหมายเพื่อให้มีเวลามากขึ้นในการทำงานที่สำคัญบางอย่างโดยปกติจะเป็นธุรกรรมเครือข่าย เมื่อดูในแอปของฉันดูเหมือนว่าสิ่งต่างๆในเครือข่ายส่วนใหญ่ของฉันมีความสำคัญและเมื่อมีการเริ่มต้นฉันต้องการดำเนินการให้เสร็จสิ้นหากผู้ใช้กดปุ่มโฮม ดังนั้นจึงเป็นที่ยอมรับ / แนวทางปฏิบัติที่ดีในการรวมทุกธุรกรรมเครือข่าย (และฉันไม่ได้พูดถึงการดาวน์โหลดข้อมูลจำนวนมากส่วนใหญ่เป็น xml สั้น ๆ ) beginBackgroundTaskWithExpirationHandlerเพื่อให้ปลอดภัย

6
วิธีใช้คีย์เวิร์ด Objective-C แบบ nonnull และ nullable ในวิธี API แบบบล็อก
พิจารณาวิธีการต่อไปนี้ - (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; ด้วยคำหลักใหม่nonnullและnullable คำอธิบายประกอบเราสามารถเพิ่มคุณค่าได้ดังนี้: - (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; แต่เรายังได้รับคำเตือนนี้: ตัวชี้ไม่มีตัวระบุประเภท nullability (__nonnull หรือ __nullable) หมายถึงพารามิเตอร์ที่สาม (บล็อกที่หนึ่ง) เอกสารไม่ครอบคลุมกับตัวอย่างวิธีการระบุ nullability ของพารามิเตอร์บล็อก มันระบุคำต่อคำ คุณสามารถใช้รูปแบบที่ไม่ขีดเส้นใต้ที่เป็นค่าว่างและไม่เป็นค่าว่างได้ทันทีหลังจากวงเล็บเปิดตราบใดที่ชนิดนั้นเป็นวัตถุธรรมดาหรือตัวชี้บล็อก ฉันลองใส่หนึ่งในสองคำหลักสำหรับบล็อก (ในตำแหน่งใดก็ได้) โดยไม่มีโชค ลองใช้รูปแบบที่นำหน้าขีดล่างด้วย ( __nonnullและ__nullable) ดังนั้นคำถามของฉันคือฉันจะระบุความหมายเชิงโมฆะสำหรับพารามิเตอร์บล็อกได้อย่างไร

7
Xcode Debugger: ดูค่าของตัวแปร
รหัสของฉันใน UITableViewController: delegate.myData = [myData objectAtIndex:indexPath.row]; ฉันจะดูค่าของdelegate.myDataหรือindexPath.rowใน Debugger ได้อย่างไร delegate.myDataควรเป็นอาร์เรย์และ ฉันเท่านั้นที่สามารถดูที่อยู่ในหน่วยความจำของวัตถุและแต่อยู่ที่ไหนและ?indexPath.rowintdelegateindexPathmyDatarow

22
ลบแท็ก HTML ออกจาก NSString บน iPhone
มีสองวิธีที่แตกต่างกันเพื่อเอาเป็นHTML tagsจากในNSStringCocoa วิธีหนึ่งคือการแสดงผลสตริงเป็นNSAttributedStringแล้วจับข้อความที่แสดงผล อีกวิธีหนึ่งคือการใช้NSXMLDocument's- objectByApplyingXSLTStringวิธีใช้การXSLTแปลงที่ทำได้ น่าเสียดายที่ iPhone ไม่รองรับNSAttributedStringหรือNSXMLDocument. มีเคสขอบมากเกินไปและHTMLเอกสารที่มีรูปแบบไม่ถูกต้องเพื่อให้ฉันรู้สึกสบายใจในการใช้ regex หรือNSScanner. ใครมีวิธีแก้ปัญหานี้หรือไม่? คำแนะนำอย่างหนึ่งคือเพียงแค่มองหาอักขระแท็กเปิดและปิดวิธีนี้จะใช้ไม่ได้ยกเว้นกรณีที่ไม่สำคัญมาก ตัวอย่างเช่นกรณีเหล่านี้ (จากบท Perl Cookbook ในเรื่องเดียวกัน) จะทำลายวิธีนี้: <IMG SRC = "foo.gif" ALT = "A > B"> <!-- <A comment> --> <script>if (a<b && a>c)</script> <![INCLUDE CDATA [ >>>>>>>>>>>> ]]>

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