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

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

14
การทำความเข้าใจการนับอ้างอิงด้วย Cocoa และ Objective-C
ฉันเพิ่งเริ่มดู Objective-C และ Cocoa ด้วยมุมมองในการเล่นกับ iPhone SDK ฉันพอใจกับแนวคิดmallocและfreeแนวคิดของ C พอสมควรแต่รูปแบบการนับการอ้างอิงของ Cocoa ทำให้ฉันค่อนข้างสับสน ฉันบอกแล้วว่ามันสวยมากเมื่อคุณเข้าใจ แต่ฉันยังไม่เกินโคก วิธีทำrelease, retainและautoreleaseการทำงานและสิ่งที่มีการประชุมเกี่ยวกับการใช้ของพวกเขา? (หรือล้มเหลวคุณอ่านอะไรที่ช่วยให้คุณได้รับมัน)

5
แปลง NSNumber เป็น int ใน Objective-C
ฉันใช้[NSNumber numberWithInt:42]หรือ@(42)เพื่อแปลง int เป็น NSNumber ก่อนที่จะเพิ่มลงใน NSDictionary: int intValue = 42; NSNumber *numberValue = [NSNumber numberWithInt:intValue]; NSDictionary *dict = @{ @"integer" : numberValue }; เมื่อฉันดึงค่าจาก NSDictionary ฉันจะแปลงค่าจาก NSNumber กลับเป็น int ได้อย่างไร NSNumber *number = dict[@"integer"]; int *intNumber = // ...? มันมีข้อยกเว้นว่าต้องมีการแคสต์เมื่อฉันทำแบบนี้: int number = (int)dict[@"integer"];

11
ปรับขนาดตัวอักษร UIButton เป็นความกว้าง
ฉันมีรหัสต่อไปนี้: UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0.0, 0.0, 25, 25); [[button layer] setCornerRadius:5.0f]; [[button layer] setMasksToBounds:YES]; [[button layer] setBackgroundColor:[[UIColor redColor] CGColor]]; [button.titleLabel setFrame:CGRectMake(0,0, 25, 25)]; [button setTitle:[NSString stringWithFormat:@"%@", [[topics objectAtIndex:indexPath.row] unread]] forState:UIControlStateNormal]; ปัญหาคือเมื่อสตริงในข้อความไม่ยาวแสดงว่าดี (1-2 หลัก) อย่างไรก็ตามเมื่อมันค่อนข้างยาว (3 ++ หลัก) สิ่งที่ฉันเห็นคือปุ่มสีแดงไม่มีข้อความอยู่ข้างใน ฉันจะปรับสิ่งนี้ได้อย่างไร? ฉันไม่คิดว่า: [button.titleLabel setAdjustsFontSizeToFitWidth:YES]; ได้งานใช่ไหม?
122 ios  objective-c 

6
Objective-C: คุณสมบัติ / ตัวแปรอินสแตนซ์ในหมวดหมู่
เนื่องจากฉันไม่สามารถสร้างคุณสมบัติที่สังเคราะห์ในประเภทใน Objective-C ได้ฉันจึงไม่รู้วิธีเพิ่มประสิทธิภาพโค้ดต่อไปนี้: @interface MyClass (Variant) @property (nonatomic, strong) NSString *test; @end @implementation MyClass (Variant) @dynamic test; - (NSString *)test { NSString *res; //do a lot of stuff return res; } @end วิธีการทดสอบเรียกว่าหลายครั้งบนรันไทม์และฉันกำลังทำหลายอย่างเพื่อคำนวณผลลัพธ์ โดยปกติการใช้คุณสมบัติสังเคราะห์ฉันจะเก็บค่าไว้ใน IVar _test ในครั้งแรกที่เรียกเมธอดและเพิ่งส่งคืน IVar นี้ในครั้งต่อไป ฉันจะปรับโค้ดด้านบนให้เหมาะสมได้อย่างไร

14
UIView ปัดเศษโดยใช้ CALayers - เฉพาะบางมุม - อย่างไร?
ในแอปพลิเคชันของฉัน - มีสี่ปุ่มชื่อดังนี้: บนซ้าย ล่างซ้าย บน - ขวา ล่าง - ขวา เหนือปุ่มมีมุมมองภาพ (หรือ UIView) ตอนนี้สมมติว่าผู้ใช้แตะที่ปุ่มบน - ซ้าย รูปภาพ / มุมมองด้านบนควรปัดที่มุมนั้น ฉันมีปัญหาในการใช้มุมโค้งมนกับ UIView ตอนนี้ฉันใช้รหัสต่อไปนี้เพื่อใช้มุมโค้งมนกับแต่ละมุมมอง: // imgVUserImg is a image view on IB. imgVUserImg.image=[UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"any Url Here"]; CALayer *l = [imgVUserImg layer]; [l setMasksToBounds:YES]; [l setCornerRadius:5.0]; [l setBorderWidth:2.0]; [l setBorderColor:[[UIColor …

9
กรอง NSArray เป็น NSArray ใหม่ใน Objective-C
ฉันมีNSArrayและฉันต้องการสร้างNSArrayวัตถุใหม่จากอาร์เรย์เดิมที่ตรงตามเกณฑ์ที่กำหนด เกณฑ์จะถูกกำหนดโดยฟังก์ชันที่ส่งคืน a BOOL. ฉันสามารถสร้างNSMutableArrayทำซ้ำผ่านอาร์เรย์ต้นทางและคัดลอกวัตถุที่ฟังก์ชันตัวกรองยอมรับแล้วสร้างเวอร์ชันที่ไม่เปลี่ยนรูปได้ มีวิธีที่ดีกว่า?

3
จะทำให้คลาสเป็นไปตามโปรโตคอลใน Swift ได้อย่างไร
ใน Objective-C: @interface CustomDataSource : NSObject <UITableViewDataSource> @end ใน Swift: class CustomDataSource : UITableViewDataSource { } อย่างไรก็ตามข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น: ประเภท 'CellDatasDataSource' ไม่สอดคล้องกับโปรโตคอล 'NSObjectProtocol' ประเภท 'CellDatasDataSource' ไม่สอดคล้องกับโปรโตคอล 'UITableViewDataSource' วิธีที่ถูกต้องควรเป็นอย่างไร?
121 objective-c  swift 

10
SplitView เหมือนแอพ Facebook บน iPhone
ฉันต้องการสร้างแอพiPhoneที่ใช้ฉากการนำทางที่คล้ายกับรูปภาพในลิงค์ โปรดทราบว่าฉันไม่ต้องการให้สิ่งนี้ใช้ได้กับ iPad เท่านั้นฉันต้องการให้มันใช้งานได้กับ iPhone ตามภาพเมื่อคุณคลิกที่รายการมุมมองตารางมันจะซ่อนมุมมองตารางและทำให้ดูเต็มหน้าจอ ฉันต้องการไอเดียในการทำสิ่งนี้เพราะฉันคิดไม่ออก ขอบคุณ

5
วิธีใช้ NSCache
ใครช่วยยกตัวอย่างวิธีใช้NSCacheแคชสตริงได้ไหม หรือใครมีลิงค์คำอธิบายดีๆ? หาไม่เจอ ..

13
ตรวจสอบว่าเธรดปัจจุบันเป็นเธรดหลักหรือไม่
มีวิธีใดในการตรวจสอบว่าเธรดปัจจุบันเป็นเธรดหลักใน Objective-C หรือไม่ ฉันอยากทำอะไรแบบนี้ - (void)someMethod { if (IS_THIS_MAIN_THREAD?) { NSLog(@"ok. this is main thread."); } else { NSLog(@"don't call this method from other thread!"); } }

22
ตรวจพบกรณีที่ข้อ จำกัด แนะนำความสูงเป็นศูนย์อย่างคลุมเครือ
หลังจากอัปเดตเป็น Xcode 6.1 beta 2 เมื่อฉันเรียกใช้แอปที่มีเซลล์ tableview ผู้ช่วยแก้ไขข้อบกพร่องกล่าวว่า: Warning once only: Detected a case where constraints ambiguously suggest a height of zero for a tableview cell's content view. We're considering the collapse unintentional and using standard height instead. ก่อนหน้านี้เมื่อฉันใช้ Xcode 5 ในโปรเจ็กต์นี้ฉันจะได้รับข้อผิดพลาดเล็กน้อย แต่สิ่งเหล่านั้นหายไปตั้งแต่ฉันอัปเกรด ตอนนี้ฉันไม่มีข้อผิดพลาดหรือคำเตือนอื่น ๆ ฉันได้ลองปรับขนาดของเซลล์มุมมองตารางทั้งหมดแล้วและลองใช้ความสูงมาตรฐาน แต่ฉันก็ยังได้รับคำเตือนเหมือนเดิม: Warning once only: …

7
เอาต์พุต gdb นี้หมายถึงอะไร?
ฉันมีปุ่มที่เล่นเสียงและดูเหมือนว่าจะทำงานได้ดีอย่างสมบูรณ์บนเครื่องจำลอง แต่ฉันได้รับข้อความนี้: เกิดข้อผิดพลาดในการโหลด /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn: dlopen (/System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn. MacOS / AudioIPCPlugIn, 262): ไม่พบสัญลักษณ์: ___CFObjCIsCollectable อ้างอิงจาก: /System/Library/Frameworks/Security.framework/Versions/A/Security คาดว่าจะอยู่ใน: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation ใน /System/Library/Frameworks/Security.framework/Versions/A/Security 2011-11-01 02: 13: 02.605 Halloween FX [33484: 10703] เกิดข้อผิดพลาดในการโหลด /System/Library/Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn: dlopen (/ System / Library /Extensions/AudioIPCDriver.kext/Contents/Resources/AudioIPCPlugIn.bundle/Contents/MacOS/AudioIPCPlugIn, 262): ไม่พบสัญลักษณ์: ___CFObjCIsCollectable อ้างอิงจาก: /System/Library/Frameworks/Security.framework/Versions/A/Security คาดว่าจะอยู่ใน: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation ใน /System/Library/Frameworks/Security.framework/Versions/A/Security 2011-11-01 02: 13: 02.657 Halloween FX [33484: …

12
ข้อผิดพลาด: CUICatalog: ระบุชื่อเนื้อหาไม่ถูกต้อง: (null) หรือตัวคูณมาตราส่วนไม่ถูกต้อง: 2.000000
TableViewApplication[1458:70b] CUICatalog: Invalid asset name supplied: (null), or invalid scale factor: 2.000000 รับคำเตือนนี้ขณะทำงานกับ TableViewController วิธีแก้ไขข้อผิดพลาดนี้และบล็อกใดได้รับผลกระทบ
120 ios  objective-c  xcode5 

8
# นำเข้าโดยใช้วงเล็บมุม <> และเครื่องหมายคำพูด“”
ฉันสงสัยว่าอะไรเป็นตัวตัดสินว่าคุณได้รับอนุญาตให้ใช้&lt;Header.h&gt;หรือ"Header.h"เมื่อคุณนำเข้าไฟล์ใน Objective-C จนถึงตอนนี้ข้อสังเกตของฉันคือคุณใช้เครื่องหมายคำพูด""สำหรับไฟล์ในโครงการของคุณที่คุณมีแหล่งที่มาของการนำไปใช้และวงเล็บเหลี่ยม&lt;&gt;เมื่อคุณอ้างอิงไลบรารีหรือเฟรมเวิร์ก แต่มันทำงานอย่างไร? ฉันต้องทำอย่างไรเพื่อให้ชั้นเรียนของตัวเองใช้วงเล็บได้ ตอนนี้ Xcode ไม่อนุญาตให้ฉันทำสิ่งนั้นกับส่วนหัวของตัวเอง &lt;frameworkname/file.h&gt;นอกจากนี้โดยมองในบางส่วนหัวกรอบผมเห็นว่าส่วนหัวอ้างอิงกันและกันด้วย อย่างไรที่ทำงานหรือไม่ ดูเหมือนแพ็คเกจใน Java แต่เท่าที่ฉันรู้ไม่มีสิ่งที่เรียกว่าแพ็คเกจใน Objective-C

15
UIRefreshControl - startRefreshing ไม่ทำงานเมื่อ UITableViewController อยู่ใน UINavigationController
ฉันได้ตั้งค่า UIRefreshControl ใน UITableViewController ของฉัน (ซึ่งอยู่ใน UINavigationController) และทำงานได้ตามที่คาดไว้ (เช่นการดึงลงจะทำให้เหตุการณ์ที่ถูกต้อง) อย่างไรก็ตามหากฉันเรียกใช้beginRefreshingวิธีการอินสแตนซ์โดยทางโปรแกรมบนตัวควบคุมการรีเฟรชเช่น: [self.refreshControl beginRefreshing]; ไม่มีอะไรเกิดขึ้น. มันควรจะเคลื่อนไหวลงและแสดงสปินเนอร์ endRefreshingวิธีการทำงานอย่างถูกต้องเมื่อผมเรียกว่าหลังจากการฟื้นฟู ฉันสร้างโครงการต้นแบบพื้นฐานด้วยพฤติกรรมนี้และทำงานได้อย่างถูกต้องเมื่อ UITableViewController ของฉันถูกเพิ่มลงในตัวควบคุมมุมมองรูทของผู้รับมอบสิทธิ์โดยตรงเช่น: self.viewController = tableViewController; self.window.rootViewController = self.viewController; แต่ถ้าฉันจะเพิ่มtableViewControllerการ UINavigationController เป็นครั้งแรกแล้วเพิ่มควบคุมการนำเป็นrootViewControllerที่beginRefreshingทำงานของวิธีการไม่ได้ เช่น UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableViewController]; self.viewController = navController; self.window.rootViewController = self.viewController; ความรู้สึกของฉันคือมีบางอย่างเกี่ยวข้องกับลำดับชั้นมุมมองที่ซ้อนกันภายในตัวควบคุมการนำทางไม่ได้เล่นได้ดีกับตัวควบคุมการทบทวน - ข้อเสนอแนะใด ๆ ? ขอบคุณ

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