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

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

6
วิธีแปลง std :: string เป็น NSString
สวัสดีฉันพยายามที่จะแปลงมาตรฐานstd::stringเป็นNSStringแต่ฉันไม่ได้มีโชคดีมาก ฉันสามารถแปลงจาก an NSStringเป็น a ได้สำเร็จstd::stringด้วยรหัสต่อไปนี้ NSString *realm = @"Hollywood"; std::string REALM = [realm cStringUsingEncoding:[NSString defaultCStringEncoding]]; อย่างไรก็ตามฉันได้รับข้อผิดพลาดเกี่ยวกับเวลาคอมไพล์เมื่อฉันลองทำสิ่งต่อไปนี้ NSString *errorMessage = [NSString stringWithCString:REALM encoding:[NSString defaultCStringEncoding]]; ข้อผิดพลาดที่ฉันได้รับคือ Cannot convert 'std::string' to 'const char*' in argument passing ฉันขาดอะไรที่นี่? ขอบคุณล่วงหน้า.

13
วิธีใช้ performSelector: withObject: afterDelay: กับประเภทดั้งเดิมในโกโก้?
NSObjectวิธีการperformSelector:withObject:afterDelay:ช่วยให้ผมเรียกวิธีการเกี่ยวกับวัตถุที่มีการโต้เถียงวัตถุหลังจากระยะเวลาหนึ่ง ไม่สามารถใช้สำหรับเมธอดที่มีอาร์กิวเมนต์ที่ไม่ใช่อ็อบเจ็กต์ (เช่น ints, floats, structs, non-object pointers เป็นต้น) เป็นอะไรที่ง่ายวิธีการเพื่อให้บรรลุสิ่งเดียวกันกับวิธีการที่มีข้อโต้แย้งที่ไม่ใช่วัตถุ? ฉันรู้ว่าสำหรับปกติperformSelector:withObject:วิธีแก้ปัญหาคือการใช้NSInvocation(ซึ่งมันซับซ้อนมาก) แต่ฉันไม่รู้ว่าจะจัดการกับส่วน "หน่วงเวลา" อย่างไร ขอบคุณ

4
NSZombie คืออะไร?
ฉันเคยเห็นคำแนะนำว่าให้ตั้งค่าNSZombieEnabledเป็นtrueในขณะที่แก้ไขข้อบกพร่อง NSZombie คืออะไร? เป็นกรอบหรือไม่? การตั้งค่า?

2
NSDictionary - ต้องตรวจสอบว่าพจนานุกรมมีคู่คีย์ - ค่าหรือไม่
ฉันต้องการถามบางสิ่งดังต่อไปนี้ สมมติว่าฉันมีพจนานุกรม NSMutableDictionary *xyz=[[NSMutableDictionary alloc] init]; [xyz setValue:@"sagar" forKey:@"s"]; [xyz setValue:@"amit" forKey:@"a"]; [xyz setValue:@"nirav" forKey:@"n"]; [xyz setValue:@"abhishek" forKey:@"a"]; [xyz setValue:@"xrox" forKey:@"x"]; ตอนนี้ต้องตรวจสอบดังนี้ [xyz มีค่าคีย์ "b" ?? คู่หรือเปล่า? คำถามคืออย่างไร? คำถามอื่น ๆ คือจะนับคู่คีย์ - ค่าทั้งหมดได้อย่างไร? ยกตัวอย่างเช่น NSInteger mCount=[xyz keyCounts];

4
วิธีใช้ Swift struct ใน Objective-C
ฉันมีโครงสร้างที่เก็บค่าคงที่ของแอปพลิเคชันดังต่อไปนี้: struct Constant { static let ParseApplicationId = "xxx" static let ParseClientKey = "xxx" static var AppGreenColor: UIColor { return UIColor(hexString: "67B632") } } ค่าคงที่เหล่านี้สามารถใช้ในรหัส Swift ได้โดยการเรียกConstant.ParseClientKeyเช่น แต่ในโค้ดของฉันมันยังมีคลาส Objective-C อยู่ด้วย ดังนั้นคำถามของฉันคือจะใช้ค่าคงที่เหล่านี้ในรหัส Objective-C ได้อย่างไร? หากวิธีการประกาศค่าคงที่ไม่ดีวิธีใดที่ดีที่สุดในการสร้างค่าคงที่ทั่วโลกเพื่อใช้ในโค้ด Swift และ Objective-C

4
เข้าถึงแคตตาล็อกสินทรัพย์โดยทางโปรแกรม
ฉันรู้ว่าเป็นฟีเจอร์ใหม่และอาจเป็นไปไม่ได้ แต่ฉันชอบที่จะสามารถใช้แคตตาล็อกเนื้อหาเพื่อจัดระเบียบเนื้อหาของฉันได้ แต่ฉันเข้าถึงรูปภาพทั้งหมดของฉันโดยใช้โปรแกรม ฉันจะเข้าถึงภาพของฉันตอนนี้ได้อย่างไร ฉันยังคงเข้าถึงพวกเขาโดยใช้ชื่อไฟล์ดังนี้: [UIImage imageNamed:@"my-asset-name.png"]; ดูเหมือนว่าแคตตาล็อกเนื้อหาไม่ได้อ้างอิงส่วนขยายดังนั้นการเข้าถึงโดยไม่มี ".png" จะมีประสิทธิภาพมากกว่าหรือไม่ เหตุผลที่ฉันถามแทนที่จะทดสอบด้วยตัวเองก็คือแม้ว่าหลังจากลบเนื้อหาและแค็ตตาล็อกสินทรัพย์ของฉันออกแล้วจากนั้นทำความสะอาดโฟลเดอร์บิลด์ฉันก็ยังสามารถเข้าถึงเนื้อหาของฉันในแอปพลิเคชันของฉันได้ นี่เป็นการป้องกันไม่ให้ฉันทดสอบแคตตาล็อกเนื้อหาเมื่อฉันนำไปใช้ หลังจากดูแคตตาล็อกเนื้อหาแล้วฉันพบ "Contents.json" สำหรับแต่ละเนื้อหาและมีรูปแบบดังนี้: { "images" : [ { "idiom" : "universal", "scale" : "1x" }, { "idiom" : "universal", "scale" : "2x", "filename" : "my-asset@2x.png" } ], "info" : { "version" : 1, "author" : "xcode" } } …

5
ใน Swift ฉันจะประกาศตัวแปรประเภทเฉพาะที่สอดคล้องกับโปรโตคอลอย่างน้อยหนึ่งรายการได้อย่างไร
ใน Swift ฉันสามารถตั้งค่าประเภทของตัวแปรอย่างชัดเจนโดยการประกาศดังต่อไปนี้: var object: TYPE_NAME หากเราต้องการก้าวไปอีกขั้นและประกาศตัวแปรที่สอดคล้องกับโปรโตคอลหลายตัวเราสามารถใช้การprotocolประกาศ: var object: protocol<ProtocolOne,ProtocolTwo>//etc จะเป็นอย่างไรหากฉันต้องการประกาศอ็อบเจ็กต์ที่เป็นไปตามโปรโตคอลตั้งแต่หนึ่งโปรโตคอลขึ้นไปและเป็นประเภทคลาสพื้นฐานที่เฉพาะเจาะจง Objective-C ที่เทียบเท่าจะมีลักษณะดังนี้: NSSomething<ABCProtocolOne,ABCProtocolTwo> * object = ...; ใน Swift ฉันคาดหวังว่ามันจะมีลักษณะเช่นนี้: var object: TYPE_NAME,ProtocolOne//etc สิ่งนี้ทำให้เรามีความยืดหยุ่นในการจัดการกับการใช้งานประเภทพื้นฐานตลอดจนอินเทอร์เฟซเพิ่มเติมที่กำหนดไว้ในโปรโตคอล มีวิธีอื่นที่ชัดเจนกว่าที่ฉันอาจพลาดไปหรือไม่? ตัวอย่าง ตัวอย่างเช่นสมมติว่าฉันมีUITableViewCellโรงงานที่รับผิดชอบในการส่งคืนเซลล์ที่เป็นไปตามโปรโตคอล เราสามารถตั้งค่าฟังก์ชันทั่วไปที่ส่งคืนเซลล์ที่เป็นไปตามโปรโตคอลได้อย่างง่ายดาย: class CellFactory { class func createCellForItem<T: UITableViewCell where T:MyProtocol >(item: SpecialItem,tableView: UITableView) -> T { //etc } } ในภายหลังฉันต้องการยกเลิกการจัดคิวเซลล์เหล่านี้ในขณะที่ใช้ประโยชน์จากทั้งชนิดและโปรโตคอล var cell: …

6
iOS: เปรียบเทียบสองวันที่
ฉันมีสิ่งNSDateที่ฉันต้องเปรียบเทียบกับอีกสองคนNSDateและฉันลองใช้NSOrderAscendingและNSOrderDescendingแต่ถ้าวันที่ของฉันเท่ากันในอีกสองวัน? ตัวอย่าง: ถ้าฉันมีmyDate = 24/05/2011 และอีกสองตัวที่เป็นหนึ่ง = 24/05/2011และสอง24/05/2011ฉันจะใช้อะไรได้บ้าง?

14
จะสกัดกั้นการสัมผัสเหตุการณ์บนวัตถุ MKMapView หรือ UIWebView ได้อย่างไร
ฉันไม่แน่ใจว่าฉันทำอะไรผิด แต่ฉันพยายามจับสัมผัสMKMapViewวัตถุ ฉันแบ่งคลาสย่อยโดยสร้างคลาสต่อไปนี้: #import <UIKit/UIKit.h> #import <MapKit/MapKit.h> @interface MapViewWithTouches : MKMapView { } - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event; @end และการนำไปใช้: #import "MapViewWithTouches.h" @implementation MapViewWithTouches - (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event { NSLog(@"hello"); //[super touchesBegan:touches withEvent:event]; } @end แต่ดูเหมือนว่าเมื่อฉันใช้คลาสนี้ฉันไม่เห็นอะไรเลยใน Console: MapViewWithTouches *mapView = [[MapViewWithTouches alloc] initWithFrame:self.view.frame]; [self.view insertSubview:mapView …

14
ปัญหาการคอมไพล์สร้างหรือเก็บถาวรด้วย Xcode 4 (และการอ้างอิง)
คำถามนี้มีการพัฒนาในช่วงหลายสัปดาห์ที่ผ่านมาเพื่อให้ครอบคลุมประเด็นทั่วไปมากขึ้นด้วย xcode4 (และการอัปเกรดโครงการในรูปแบบเก่ากว่า xcodes). อย่างไรก็ตามหลายปัญหาสามารถแก้ไขได้โดยทำตามคำแนะนำชุดเดียวกัน หากคุณมีปัญหาใด ๆ ต่อไปนี้ให้ลองใช้วิธีการในคำตอบที่ยอมรับ: Xcode 4 ไม่สามารถจัดเก็บแอปได้ Xcode 4 สร้างที่เก็บถาวรที่ใช้ไม่ได้ Xcode 4 ไม่ได้สร้าง. ipa Xcode 4 ไม่สามารถคอมไพล์ได้เนื่องจากข้อผิดพลาดของตัวประมวลผลล่วงหน้า Xcode 4 ไม่พบส่วนหัว รหัสของ Xcode 4 ไม่ทำงาน การพึ่งพาโครงการจะไม่รวบรวม การเพิ่มการพึ่งพาทำให้เกิดปัญหาข้างต้น คำถามเดิม หัวข้อ: "ไม่พบไฟล์ปัญหาคำศัพท์หรือตัวประมวลผลล่วงหน้า" ใน Xcode 4 ฉันมีโครงการใน Xcode 4 ที่จะสร้างได้ดีและทำงานบนอุปกรณ์และโปรแกรมจำลอง แต่เมื่อพยายามจัดเก็บข้อผิดพลาดเมื่อค้นหาไฟล์ส่วนหัวที่เกี่ยวข้องกับไลบรารีแบบคงที่: In file included from /Volumes/Development/Path/LBProject/LBProject/LBProject-Prefix.pch:15: In file included from …

27
ไม่สามารถสร้าง NSPersistentStoreCoordinator ด้วยโมเดลศูนย์
เคยแคร็กครั้งแรกที่ Core Data และฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อเรียกใช้รหัสบนอุปกรณ์ของฉัน แต่มันใช้งานได้ดีบนเครื่องจำลอง .. * การยุติแอปเนื่องจากข้อยกเว้นที่ไม่ถูกจับ 'NSInvalidArgumentException' เหตุผล: 'ไม่สามารถสร้าง NSPersistentStoreCoordinator ด้วยโมเดลศูนย์' วิธีการบางอย่างของฉันที่อาจทำให้เกิดปัญหา: - (NSManagedObjectContext *)managedObjectContext { if (__managedObjectContext != nil) { return __managedObjectContext; } NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; if (coordinator != nil) { __managedObjectContext = [[NSManagedObjectContext alloc] init]; [__managedObjectContext setPersistentStoreCoordinator:coordinator]; } return __managedObjectContext; } /** Returns the …


12
การวางแนวภาพ iOS มีพฤติกรรมแปลก ๆ
ในช่วงสองสามสัปดาห์ที่ผ่านมาฉันทำงานกับรูปภาพในวัตถุประสงค์ -c และสังเกตเห็นพฤติกรรมแปลก ๆ มากมาย อย่างแรกเช่นเดียวกับคนอื่น ๆ อีกมากมายฉันเคยมีปัญหานี้ที่ภาพที่ถ่ายด้วยกล้อง (หรือถ่ายด้วยกล้องของคนอื่นและ MMS จะให้ฉัน) หมุน 90 องศา ฉันไม่แน่ใจว่าทำไมในโลกนี้ถึงเกิดสิ่งนี้ขึ้น (ด้วยเหตุนี้คำถามของฉัน ) แต่ฉันสามารถหางานราคาถูกได้ คำถามของฉันเวลานี้คือทำไมนี้เกิดขึ้น ? ทำไม Apple จึงหมุนภาพ เมื่อฉันถ่ายภาพโดยหันกล้องขึ้นด้านขวาเว้นแต่ฉันจะใช้รหัสที่กล่าวถึงข้างต้นเมื่อฉันบันทึกภาพจะได้รับการบันทึกแบบหมุน ตอนนี้วิธีแก้ปัญหาของฉันก็ใช้ได้จนถึงสองสามวันที่ผ่านมา แอปพลิเคชันของฉันแก้ไขแต่ละพิกเซลของรูปภาพโดยเฉพาะช่องอัลฟาของ PNG (ดังนั้นการแปลง JPEG ใด ๆ จึงถูกโยนออกไปนอกหน้าต่างสำหรับสถานการณ์ของฉัน) ไม่กี่วันที่ผ่านมาฉันสังเกตเห็นว่าแม้ว่ารูปภาพจะแสดงอย่างถูกต้องในแอพของฉันด้วยรหัสวิธีแก้ปัญหาของฉัน แต่เมื่ออัลกอริทึมของฉันแก้ไขพิกเซลแต่ละพิกเซลของรูปภาพ แต่ก็คิดว่ารูปภาพนั้นหมุน ดังนั้นแทนที่จะแก้ไขพิกเซลที่ด้านบนของภาพมันจะแก้ไขพิกเซลที่ด้านข้างของภาพ (เพราะคิดว่ามันควรจะหมุนได้)! ฉันคิดไม่ออกว่าจะหมุนภาพในหน่วยความจำอย่างไร - โดยหลักการแล้วฉันต้องการเพียงแค่ลบimageOrientationธงนั้นทั้งหมดออกด้วยกัน นี่คือสิ่งอื่นที่ทำให้ฉันงงเช่นกัน ... เมื่อฉันถ่ายภาพimageOrientationค่าจะตั้งเป็น 3 รหัสวิธีแก้ปัญหาของฉันฉลาดพอที่จะรู้เรื่องนี้และพลิกมันเพื่อให้ผู้ใช้ไม่สังเกตเห็น นอกจากนี้รหัสของฉันในการบันทึกภาพลงในไลบรารีจะรับรู้สิ่งนี้พลิกมันแล้วบันทึกเพื่อให้ปรากฏในม้วนฟิล์มอย่างถูกต้อง รหัสนั้นมีลักษณะดังนี้: NSData* pngdata = …

4
สร้างอินสแตนซ์คลาส Object-c ตามชื่อ?
เป็นไปได้ไหมที่จะสร้างอินสแตนซ์ของคลาสตามชื่อ สิ่งที่ต้องการ: NSString* className = @"Car"; id* p = [Magic createClassByName:className]; [p turnOnEngine]; ฉันไม่รู้ว่ามันเป็นไปได้หรือไม่ใน objective-c แต่ดูเหมือนว่าจะเป็น


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