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

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


1
“ ผู้รับประเภท 'CALayer' สำหรับข้อความอินสแตนซ์คือการประกาศไปข้างหน้า "หมายความว่าอย่างไร
ฉันกำลังย้ายบล็อกโค้ดจากโปรเจ็กต์ iOS4 ไปยัง iOS5 และฉันมีปัญหากับ ARC รหัสสร้าง PDF จากการจับภาพหน้าจอ รหัสการสร้าง PDF UIView *captureView; ... NSMutableData *pdfData = [NSMutableData data]; UIGraphicsBeginPDFContextToData(pdfData, captureView.bounds, nil); UIGraphicsBeginPDFPage(); CGContextRef pdfContext = UIGraphicsGetCurrentContext(); [captureView.layer renderInContext:pdfContext]; UIGraphicsEndPDFContext(); บรรทัด renderInContext [captureView.layer renderInContext:pdfContext]; สร้างข้อผิดพลาดต่อไปนี้ Automatic Reference Counting issue Receiver type 'CALayer' for instance message is a forward declaration มีความคิดอะไรเกิดขึ้นที่นี่?


6
ObjectiveC Parse Integer จาก String
ฉันกำลังพยายามดึงสตริง (ซึ่งมีจำนวนเต็ม) จากอาร์เรย์แล้วใช้เป็น int ในฟังก์ชัน ฉันกำลังพยายามแปลงเป็น int โดยใช้ intValue นี่คือรหัสที่ฉันพยายาม NSArray *_returnedArguments = [serverOutput componentsSeparatedByString:@":"]; [_appDelegate loggedIn:usernameField.text:passwordField.text:(int)[[_returnedArguments objectAtIndex:2] intValue]]; ฉันได้รับข้อผิดพลาดนี้: การส่งอาร์กิวเมนต์ 3 ของ 'loggedIn :::' ทำให้ตัวชี้จากจำนวนเต็มโดยไม่ต้องใช้ cast มีอะไรผิดปกติ

17
UILabel ไม่ใช่ข้อความที่ย่อขนาดอัตโนมัติให้พอดีกับขนาดฉลาก
ฉันมีปัญหาแปลก ๆ นี้และฉันจัดการกับมันมานานกว่า 8 ชั่วโมงแล้ว .. ขึ้นอยู่กับสถานการณ์ฉันต้องคำนวณUILabelsขนาดแบบไดนามิก เช่นฉันUIViewControllerได้รับเหตุการณ์และฉันเปลี่ยนUILabelsขนาด จากใหญ่ไปเล็ก ขนาดของฉันUILabelเล็กลงและฉันได้ขนาดที่ถูกต้อง แต่ข้อความในของฉันUILabelยังคงเหมือนเดิมขนาดตัวอักษรเดียวกันและอื่น ๆ ฉันต้องการแบบอักษรให้เล็กลงเพื่อให้ข้อความทั้งหมดพอดีกับไฟล์UILabel. คำถามคือจะทำอย่างไรให้ข้อความพอดีกับป้ายของฉันautoshrinkingหรืออะไรทำนองนั้น? ในของฉันxib, UILabels autoshrinkมีการตรวจสอบยังหมายเลขของสายการตั้งค่าเป็น 0 และยังสตริงของฉันมีสัญลักษณ์บรรทัดใหม่ (\ n), และฉันได้เลือกlinebreakmodewordwrapไป อาจมีใครอยู่ในสถานการณ์เดียวกับฉันตอนนี้และช่วยฉันได้ไหม ฉันจะขอบคุณจริงๆ ขอบคุณล่วงหน้า! แก้ไข: UILabelขนาดตัวอักษรขั้นต่ำตั้งไว้ที่ 10

6
การคัดลอก NSArray อย่างละเอียด
มีฟังก์ชั่นในตัวที่ช่วยให้ฉันคัดลอกแบบลึกได้NSMutableArrayหรือไม่? ฉันมองไปรอบ ๆ บางคนบอกว่า[aMutableArray copyWithZone:nil]งานเป็นสำเนาลึก แต่ฉันลองแล้วดูเหมือนว่าจะเป็นการลอกแบบตื้น ๆ ตอนนี้ฉันกำลังทำสำเนาด้วยตัวเองด้วยการforวนซ้ำ: //deep copy a 9*9 mutable array to a passed-in reference array -deepMuCopy : (NSMutableArray*) array toNewArray : (NSMutableArray*) arrayNew { [arrayNew removeAllObjects];//ensure it's clean for (int y = 0; y<9; y++) { [arrayNew addObject:[NSMutableArray new]]; for (int x = 0; x<9; x++) …

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

1
คำเตือน“ การประกาศฟังก์ชันนี้ไม่ใช่ต้นแบบ” ใน Xcode 9
เมื่อใช้ Xcode 9 This function declaration is not a prototypeมีบางคำเตือนคอมไพเลอร์กล่าวว่า แนะนำให้เพิ่มลงvoidในเนื้อความของวิธีการซึ่งจะแก้ไขได้ ปัญหาที่ฉันพบคือคำเตือนเหล่านั้นจะถูกส่งไปยัง system-API เช่นUIApplicationdelegate-method: - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)())completionHandler สิ่งนี้สามารถแก้ไขได้ดังต่อไปนี้: - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)(void))completionHandler ตอนนี้ฉันสงสัยว่าวิธีการมอบสิทธิ์จะยังคงใช้งานได้ในระยะยาวหรือ Apple จะแทรกvoidiOS 11 เวอร์ชันเบต้าในภายหลัง ฉันสงสัยเพราะถ้าฉันรวมvoidเนื้อหา Xcode จะบ่นเกี่ยวกับตัวเลือกวิธีการที่ไม่ตรงกัน (ซึ่งสมเหตุสมผล) มีใครประสบปัญหาเดียวกันหรือไม่

11
ลบ 7 วันจากวันที่ปัจจุบัน
ดูเหมือนว่าจะลบ 7 วันจากวันที่ปัจจุบันไม่ได้ นี่คือวิธีที่ฉันทำ: NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; [offsetComponents setDay:-7]; NSDate *sevenDaysAgo = [gregorian dateByAddingComponents:offsetComponents toDate:[NSDate date] options:0]; SevenDaysAgo ได้รับค่าเดียวกับวันที่ปัจจุบัน กรุณาช่วย. แก้ไข: ในรหัสของฉันฉันลืมแทนที่ตัวแปรที่รับวันที่ปัจจุบันด้วยวันที่ถูกต้อง ดังนั้นโค้ดด้านบนจึงใช้งานได้
119 objective-c  ios  nsdate 

6
การจัดแนวแนวตั้งแบบอักษรที่กำหนดเอง UIButton
ฉันมีUIButtonที่ใช้แบบอักษรที่กำหนดเองซึ่งตั้งค่าเมื่อมุมมองของฉันโหลด: - (void)viewDidLoad { [super viewDidLoad]; self.searchButton.titleLabel.font = [UIFont fontWithName: @"FONTNAME" size: 15.0 ]; } ปัญหาที่ฉันพบคือฟอนต์ดูเหมือนจะลอยขึ้นจากเส้นกึ่งกลาง หากฉันแสดงความคิดเห็นในบรรทัดนี้แบบอักษรเริ่มต้นจะปรากฏอยู่ตรงกลางในแนวตั้ง แต่การเปลี่ยนเป็นแบบอักษรที่กำหนดเองจะทำให้การจัดแนวในแนวตั้งแตก ฉันได้รับปัญหาเดียวกันในเซลล์ตารางที่มีแบบอักษรที่กำหนดเองด้วย ฉันจำเป็นต้องบอกมุมมองบางส่วนหรือไม่ว่าแบบอักษรที่กำหนดเองนั้นไม่สูงเท่าฟอนต์อื่น ๆ แก้ไข: ฉันเพิ่งรู้ว่าแบบอักษรที่ฉันใช้เป็น Windows TrueType Font ฉันสามารถใช้ได้ดีใน TextEdit บน Mac มีเพียงปัญหาเกี่ยวกับการจัดตำแหน่งในแอพของฉัน

3
ในสถานการณ์ใดบ้างที่เราต้องเขียน __autoreleasing ความเป็นเจ้าของคุณสมบัติภายใต้ ARC
ฉันกำลังพยายามไขปริศนาให้เสร็จ __strongเป็นค่าเริ่มต้นสำหรับพอยน์เตอร์อ็อบเจ็กต์ Objective-C ที่เก็บรักษาได้เช่น NSObject, NSString และอื่น ๆ ซึ่งเป็นการอ้างอิงที่ชัดเจน ARC จะปรับสมดุลกับ-releaseจุดสิ้นสุดของขอบเขต __unsafe_unretainedเท่ากับวิธีเก่า ใช้สำหรับตัวชี้ที่อ่อนแอโดยไม่ยึดวัตถุที่ยึดได้ __weakเหมือนกับ__unsafe_unretainedยกเว้นว่ามันเป็นการอ้างอิงที่อ่อนแอโดยอัตโนมัติซึ่งหมายความว่าตัวชี้จะถูกตั้งค่าเป็นศูนย์ทันทีที่วัตถุที่อ้างอิงถูกยกเลิกการจัดสรร ซึ่งจะช่วยขจัดอันตรายจากตัวชี้อันตรายและข้อผิดพลาด EXC_BAD_ACCESS แต่สิ่งที่__autoreleasingดีสำหรับ? ฉันมีช่วงเวลาที่ยากลำบากในการค้นหาตัวอย่างที่ใช้ได้จริงเกี่ยวกับเวลาที่ฉันต้องใช้คุณสมบัตินี้ ฉันเชื่อว่าเป็นเพียงฟังก์ชันและวิธีการที่คาดว่าจะมีตัวชี้ตัวชี้เช่น: - (BOOL)save:(NSError**); หรือ NSError *error = nil; [database save:&error]; ซึ่งภายใต้ ARC จะต้องประกาศด้วยวิธีนี้: - (BOOL)save:(NSError* __autoreleasing *); แต่นี้เป็นที่คลุมเครือเกินไปและฉันต้องการที่จะเข้าใจว่าทำไม ข้อมูลโค้ดที่ฉันพบคือตำแหน่ง __autoreleasing ระหว่างสองดาวซึ่งดูแปลกสำหรับฉัน ประเภทคือNSError**(ตัวชี้ตัวชี้ไปที่ NSError) ดังนั้นทำไมจึงวางไว้__autoreleasingระหว่างดวงดาวไม่ใช่แค่อยู่ข้างหน้าNSError**? นอกจากนี้ยังอาจจะมีสถานการณ์อื่น ๆ __autoreleasingที่ฉันจะต้องพึ่งพา

24
UIAlertController แบบอักษรขนาดสีที่กำหนดเอง
ฉันใช้ UIAlertController ใหม่เพื่อแสดงการแจ้งเตือน ฉันมีรหัสนี้: // nil titles break alert interface on iOS 8.0, so we'll be using empty strings UIAlertController *alert = [UIAlertController alertControllerWithTitle: title == nil ? @"": title message: message preferredStyle: UIAlertControllerStyleAlert]; UIAlertAction *defaultAction = [UIAlertAction actionWithTitle: cancelButtonTitle style: UIAlertActionStyleCancel handler: nil]; [alert addAction: defaultAction]; UIViewController *rootViewController = …

12
Xcode MyProjectName-Bridging-Header.h ไม่มีอยู่
ฉันต้องการเริ่มใช้ Swift ในโปรเจ็กต์ Objective-C ของฉัน ดังนั้นฉันจึงเพิ่มคลาสที่รวดเร็ว: import Foundation @objc class System : NSObject { @objc func printSome() { println("Print line System"); } } และนำเข้าเป็นไฟล์. m: #import "MyProjectName-Swift.h" เมื่อสร้างโครงการของฉันฉันได้รับข้อผิดพลาดต่อไปนี้: Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist หมายเหตุ: ภายใต้ "Build Settings-> Swift Compiler - Code Generation-> Objective-C Briding Header" ถูกตั้งค่าเป็น MyProjectName-Bridging-Header.h ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้ ความช่วยเหลือใด …
118 ios  objective-c  xcode  swift 

14
วิธีใช้ uiviewcontroller สตอรี่บอร์ดเดียวสำหรับคลาสย่อยหลาย ๆ
สมมติว่าฉันมีสตอรีบอร์ดที่มีUINavigationControllerเป็นตัวควบคุมมุมมองเริ่มต้น ควบคุมดูรากของมันคือ subclass ของซึ่งเป็นUITableViewController BasicViewControllerมีIBActionซึ่งเชื่อมต่อกับปุ่มนำทางด้านขวาของแถบนำทาง จากนั้นฉันต้องการใช้สตอรีบอร์ดเป็นเทมเพลตสำหรับมุมมองอื่น ๆ โดยไม่ต้องสร้างสตอรีบอร์ดเพิ่มเติม บอกว่ามุมมองเหล่านี้จะมีว่าอินเตอร์เฟซเดียวกัน แต่มีการควบคุมดูรากของการเรียนSpecificViewController1และซึ่งเป็นคลาสย่อยSpecificViewController2 ตัวควบคุมมุมมอง 2 ตัวนั้นจะมีฟังก์ชันและอินเทอร์เฟซเหมือนกันยกเว้นวิธี มันจะเป็นดังต่อไปนี้:BasicViewControllerIBAction @interface BasicViewController : UITableViewController @interface SpecificViewController1 : BasicViewController @interface SpecificViewController2 : BasicViewController ฉันจะทำอะไรแบบนั้นได้ไหม? ฉันสามารถเพียงอินสแตนซ์สตอรี่บอร์ดของBasicViewControllerแต่ต้องควบคุมดูราก subclass SpecificViewController1และSpecificViewController2? ขอบคุณ

8
ฉันจะเปลี่ยนสีของข้อความใน UIPickerView ภายใต้ iOS 7 ได้อย่างไร
ฉันรู้pickerView:viewForRow:forComponent:reusingViewวิธีการนี้ แต่เมื่อใช้viewมันผ่านreusingView:ฉันจะเปลี่ยนเป็นสีข้อความอื่นได้อย่างไร ถ้าฉันview.backgroundColor = [UIColor whiteColor];ไม่ใช้มุมมองใด ๆ ปรากฏขึ้นอีกต่อไป

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