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

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

24
จะหยุดการเคลื่อนไหวของ UIButton ที่ไม่ต้องการในการเปลี่ยนชื่อได้อย่างไร?
ใน iOS 7 ชื่อ UIButton ของฉันเคลื่อนไหวในและนอกเวลาผิด - สาย ปัญหานี้ไม่ปรากฏบน iOS 6 ฉันแค่ใช้: [self setTitle:text forState:UIControlStateNormal]; ฉันต้องการสิ่งนี้เกิดขึ้นทันทีและไม่มีเฟรมว่างเปล่า การกะพริบนี้เบี่ยงเบนความสนใจเป็นพิเศษและดึงความสนใจออกไปจากภาพเคลื่อนไหวอื่น ๆ

10
วิธีตรวจสอบว่า NSString เริ่มต้นด้วยอักขระบางตัว
คุณจะตรวจสอบว่า NSString เริ่มต้นด้วยอักขระบางตัวได้อย่างไร (ตัวอักษร *) The * เป็นตัวบ่งชี้สำหรับชนิดของเซลล์ดังนั้นฉันต้องการเนื้อหาของ NSString นี้โดยไม่มี * แต่ต้องรู้ว่ามี * อยู่หรือไม่

15
registerForRemoteNotificationTypes: ไม่รองรับใน iOS 8.0 และใหม่กว่า
เมื่อพยายามลงทะเบียนสำหรับการแจ้งเตือนแบบพุชภายใต้ iOS 8.x: application.registerForRemoteNotificationTypes(UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound) ฉันได้รับข้อผิดพลาดต่อไปนี้: registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later. ความคิดใด ๆ ที่เป็นวิธีใหม่ในการทำมัน? มันใช้งานได้เมื่อฉันเปิดแอพ Swift บน iOS 7.x แก้ไข บน iOS 7.x เมื่อฉันรวมรหัสตามเงื่อนไขที่ฉันได้รับ (เงื่อนไขอย่างใดอย่างหนึ่งของ SystemVersion หรือ #if __IPHONE_OS_VERSION_MAX_ALLOWED> = 80000) dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings

24
การครอบตัด UIImage
ฉันมีรหัสที่ปรับขนาดรูปภาพเพื่อให้ได้สัดส่วนที่เป็นจุดศูนย์กลางของภาพ - ฉันใช้สิ่งนี้เพื่อถ่ายUIImageและคืนค่าการแสดงรูปภาพสี่เหลี่ยมจัตุรัสขนาดเล็กคล้ายกับสิ่งที่เห็นในมุมมองอัลบั้มของ แอพรูปถ่าย (ฉันรู้ว่าฉันสามารถใช้UIImageViewและปรับโหมดการครอบตัดเพื่อให้ได้ผลลัพธ์เดียวกัน แต่บางครั้งภาพเหล่านี้จะปรากฏในUIWebViews) ฉันเริ่มสังเกตเห็นความผิดพลาดบางอย่างในรหัสนี้และฉันก็นิ่งงันเล็กน้อย ฉันมีสองทฤษฎีที่แตกต่างกันและฉันสงสัยว่าถ้าทั้งสองอยู่บนฐาน ทฤษฎี 1) ฉันประสบความสำเร็จในการปลูกพืชโดยการวาดลงในบริบทภาพนอกจอที่ขนาดเป้าหมายของฉัน เนื่องจากฉันต้องการส่วนตรงกลางของภาพฉันจึงตั้งค่าCGRectอาร์กิวเมนต์ที่ส่งผ่านไปdrawInRectยังสิ่งที่ใหญ่กว่าขอบเขตของบริบทรูปภาพของฉัน ฉันหวังว่านี่คือ Kosher แต่ฉันพยายามที่จะดึงความทรงจำอื่น ๆ ที่ฉันไม่ควรแตะต้องมาก่อนหรือไม่? ทฤษฎี 2) ฉันทำทั้งหมดนี้ในกระทู้พื้นหลัง ฉันรู้ว่ามีบางส่วนของ UIKit ที่ จำกัด เฉพาะเธรดหลัก ฉันกำลังสมมติ / หวังว่าการวาดไปยังมุมมองหน้าจอไม่ใช่หนึ่งในนั้น ฉันผิดหรือเปล่า? (โอ้ฉันคิดถึงNSImage's drawInRect:fromRect:operation:fraction:วิธีการ)

7
วิธีการใช้ UIVisualEffectView เพื่อ Blur Image
ใครช่วยยกตัวอย่างการเบลอภาพให้บ้าง ฉันพยายามหารหัสมาพักหนึ่งแล้ว :( ยังใหม่อยู่ที่ obj c! UIVisualEffectViewให้นามธรรมง่ายกว่าผลภาพที่ซับซ้อน ผลลัพธ์อาจส่งผลต่อเนื้อหาที่อยู่ด้านหลังมุมมองหรือเนื้อหาที่เพิ่มใน contentView ของมุมมอง นำUIVisualEffectViewไปใช้กับมุมมองที่มีอยู่เพื่อใช้เอฟเฟกต์เบลอหรือความสั่นไหวให้กับมุมมองที่ออก หลังจากที่คุณเพิ่ม UIVisualEffectView เพื่อลำดับชั้นดูเพิ่ม subviews ใด ๆ ที่จะ contentView UIVisualEffectViewของ อย่าเพิ่มหัวข้อย่อยโดยตรงกับUIVisualEffectViewตัวเอง https://developer.apple.com/documentation/uikit/uivisualeffectview#//apple_ref/occ/instp/UIVisualEffectView/contentView

1
dealloc ที่กำหนดเองและ ARC (Objective-C)
ในแอพ iPad เล็ก ๆ ของฉันฉันมีฟังก์ชั่น "เปลี่ยนภาษา" ที่ใช้ผู้สังเกตการณ์ viewDidLoad:ทุกควบคุมดูลงทะเบียนตัวเองกับผู้สังเกตการณ์ของฉันในช่วงของ - (void)viewDidLoad { [super viewDidLoad]; [observer registerObject:self]; } เมื่อผู้ใช้กดปุ่ม "เปลี่ยนภาษา" ภาษาใหม่จะถูกเก็บไว้ในรูปแบบของฉันและผู้สังเกตการณ์จะได้รับแจ้งและเรียกupdateUi:ตัวเลือกบนวัตถุที่ลงทะเบียน สิ่งนี้ทำงานได้ดีมากยกเว้นเมื่อฉันมีตัวควบคุมมุมมองใน TabBarController นี่คือเนื่องจากเมื่อแถบแท็บโหลดมันดึงไอคอนแท็บจากตัวควบคุมลูกโดยไม่ต้องเริ่มต้นมุมมองดังนั้นจึงviewDidLoad:ไม่ถูกเรียกดังนั้นตัวควบคุมมุมมองเหล่านั้นไม่ได้รับการแจ้งเตือนการเปลี่ยนแปลงภาษา ด้วยเหตุนี้ฉันจึงย้ายการregisterObject:โทรไปยังinitวิธีการ ย้อนกลับไปเมื่อฉันเคยviewDidLoad:ลงทะเบียนกับผู้สังเกตการณ์ฉันเคยviewDidUnload:ยกเลิกการลงทะเบียน ตั้งแต่ตอนนี้ผมลงทะเบียนในก็จะทำให้ความรู้สึกมากที่จะถอนการลงทะเบียนในinitdealloc แต่นี่คือปัญหาของฉัน เมื่อฉันเขียน: - (void) dealloc { [observer unregisterObject:self]; [super dealloc]; } ฉันได้รับข้อผิดพลาดนี้: ARC ห้ามส่งข้อความที่ชัดเจนถึง 'dealloc' เนื่องจากฉันต้องโทรหา[super dealloc]เพื่อให้แน่ใจว่าซูเปอร์คลาสนั้นสะอาดอย่างถูกต้อง แต่ ARC ห้ามไม่ให้ฉันติดอยู่ตอนนี้ มีวิธีอื่นที่จะได้รับแจ้งเมื่อวัตถุของฉันใกล้จะตายหรือไม่

11
NSUserDefaults - จะทราบได้อย่างไรว่ามีกุญแจอยู่หรือไม่
ฉันกำลังทำงานกับแอพเล็ก ๆ ของ iPhone และฉันใช้NSUserDefaultsเป็นข้อมูลอย่างต่อเนื่อง มันจะต้องติดตามสิ่งเล็ก ๆ น้อย ๆ อย่างเช่นชื่อบางชื่อและตัวเลขบางส่วนดังนั้นฉันจึงคิดว่าฉันอาจจะเข้าใจได้ง่าย ฉันพบหน้านี้สำหรับการอ้างอิง แต่ฉันคิดว่ามันไม่สามารถตอบคำถามของฉันได้ โดยทั่วไปฉันต้องการที่จะสามารถตรวจสอบว่ามีค่า (หรือคีย์) อยู่แล้วในNSUserDefaultsและจากนั้นทำบางสิ่งตาม ตัวอย่างบางส่วน: แอปเริ่มต้นขึ้นหากนี่เป็นครั้งแรกที่แอปเริ่มส่งออกการแจ้งเตือนว่ายินดีต้อนรับ หากต้องการทราบว่านี่เป็นครั้งแรกที่เปิดขึ้นมาจะอ่านUserDefaultsและตรวจสอบ ตัวอย่างที่ 2: มันบอกว่า "สวัสดี [ชื่อ]" โดยที่ชื่อคือสิ่งที่คุณป้อน หากคุณได้เปิดแอปและไม่มีชื่อมันควรจะพูดว่า "Hello World" ฉันต้องตรวจสอบว่าคุณป้อนชื่อแล้วและดำเนินการตามนั้น NSUserDefaultsชื่อที่จะถูกเก็บไว้ใน ความช่วยเหลือที่นี่? ฉันซาบซึ้งจริงๆ!

6
ฉันจะทดสอบคลาสของวัตถุใดใน Objective-C
ฉันจะทดสอบว่าวัตถุเป็นตัวอย่างของคลาสเฉพาะใน Objective-C ได้อย่างไร สมมติว่าฉันต้องการดูว่าวัตถุ a เป็นตัวอย่างของคลาส b หรือคลาส c ฉันจะดำเนินการได้อย่างไร
207 objective-c 

7
การจับตัวเองอย่างมากในบล็อกนี้มีแนวโน้มที่จะนำไปสู่วงจรการเก็บรักษา
ฉันจะหลีกเลี่ยงคำเตือนนี้ใน xcode ได้อย่างไร นี่คือข้อมูลโค้ด: [player(AVPlayer object) addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(0.1, 100) queue:nil usingBlock:^(CMTime time) { current+=1; if(current==60) { min+=(current/60); current = 0; } [timerDisp(UILabel) setText:[NSString stringWithFormat:@"%02d:%02d",min,current]];///warning occurs in this line }];

14
ฉันจะรับการอัปเดตตำแหน่งพื้นหลังได้ทุก ๆ นาทีในแอปพลิเคชัน iOS ของฉันได้อย่างไร
ฉันกำลังมองหาวิธีรับการอัปเดตตำแหน่งพื้นหลังทุก ๆ n นาทีในแอปพลิเคชัน iOS ของฉัน ฉันใช้ iOS 4.3 และวิธีแก้ปัญหาควรใช้งานกับ iPhone ที่ไม่ได้รับการเจลเบรคได้ ฉันลอง / พิจารณาตัวเลือกต่อไปนี้: CLLocationManager startUpdatingLocation/startMonitoringSignificantLocationChanges: ใช้งานได้ในพื้นหลังตามที่คาดไว้โดยอิงตามคุณสมบัติที่กำหนดค่า แต่ดูเหมือนว่าเป็นไปไม่ได้ที่จะบังคับให้อัปเดตตำแหน่งทุก ๆ นาที NSTimer: ใช้งานได้เมื่อแอพทำงานในเบื้องหน้า แต่ดูเหมือนจะไม่ได้รับการออกแบบมาสำหรับงานพื้นหลัง การแจ้งเตือนในท้องถิ่น: การแจ้งเตือนในท้องถิ่นสามารถกำหนดเวลาได้ทุก n นาที แต่ไม่สามารถเรียกใช้รหัสบางอย่างเพื่อรับตำแหน่งปัจจุบัน (โดยที่ผู้ใช้ไม่จำเป็นต้องเปิดแอปผ่านการแจ้งเตือน) วิธีการนี้ดูเหมือนจะไม่ใช่วิธีการที่สะอาดเนื่องจากไม่ใช่วิธีการแจ้งเตือนที่ควรใช้ UIApplication:beginBackgroundTaskWithExpirationHandler: เท่าที่ฉันเข้าใจสิ่งนี้ควรใช้เพื่อทำงานบางอย่างให้เสร็จในพื้นหลัง (จำกัด เวลาด้วย) เมื่อแอปถูกย้ายไปที่พื้นหลังแทนที่จะใช้กระบวนการพื้นหลังที่ "ทำงานนาน" ฉันจะใช้การอัปเดตตำแหน่งพื้นหลังปกติเหล่านี้ได้อย่างไร

25
วิธีตั้งค่าข้อความปุ่มย้อนกลับใน Swift
คุณจะลบข้อความปุ่มย้อนกลับได้อย่างไร ปุ่มย้อนกลับปัจจุบัน: <ย้อนกลับ ปุ่มย้อนกลับที่ต้องการ: <AnythingElse สิ่งเหล่านี้ไม่ได้ผล: self.navigationItem.backBarButtonItem?.title = "Back" self.backItem?.title = "" self.navigationController?.navigationBar.backItem?.title = "" self.navigationItem.backBarButtonItem?.title = "" self.navigationController?.navigationItem.backBarButtonItem?.title="Back" self.navigationController?.navigationBar.backItem?.title = "" self.navigationController?.navigationItem.backBarButtonItem?.title
207 ios  objective-c  swift 

30
Xcode 4 ค้างที่“ การแนบ (ชื่อแอป)”
ฉันเพิ่งอัพเกรดเป็น Xcode 4 และด้วยเหตุผลบางอย่างที่แอพของฉันจะไม่ทำงานในอุปกรณ์จำลองหรืออุปกรณ์ iOS มันทำงานได้อย่างสมบูรณ์แบบใน Xcode 3 แต่ทันทีที่ฉันกดรันโปรแกรมจะหยุดที่ "Attaching to ... " ดูเหมือนจะไม่มีข้อมูลอื่นใดที่จะช่วยแก้ไขปัญหานี้เช่นกัน สำหรับการสรุปคุณสามารถลองทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหา: รีสตาร์ทเครื่องจำลอง ตรวจสอบให้แน่ใจว่าคุณไม่ได้รวมไฟล์ Info.plist ในขั้นตอนการสร้าง -> คัดลอกทรัพยากรชุดข้อมูล โฟลเดอร์ทรัพยากรที่เพิ่มเข้าไปในโครงการเป็นการอ้างอิงโฟลเดอร์ (ไอคอนโฟลเดอร์สีน้ำเงิน) ที่ทำให้เกิดปัญหาหลังจากเพิ่มโฟลเดอร์เป็นกลุ่มปัญหาหายไป

6
กลไกการนับการอ้างอิงอัตโนมัติใหม่ทำงานอย่างไร
บางคนสามารถอธิบายสั้น ๆ ว่า ARC ทำงานอย่างไร ฉันรู้ว่ามันแตกต่างจาก Garbage Collection แต่ฉันแค่สงสัยว่ามันทำงานอย่างไร นอกจากนี้หาก ARC ทำในสิ่งที่ GC ทำโดยไม่มีการขัดขวางประสิทธิภาพแล้วเหตุใด Java จึงใช้ GC ทำไมมันไม่ใช้ ARC เช่นกัน?

10
ฉันจะประกาศคุณสมบัติระดับคลาสใน Objective-C ได้อย่างไร
อาจจะชัดเจน แต่ฉันไม่รู้วิธีประกาศคุณสมบัติของคลาสใน Objective-C ฉันต้องการแคชพจนานุกรมต่อชั้นเรียนและสงสัยว่าจะใส่ไว้ในชั้นเรียนได้อย่างไร
205 objective-c  cocoa  oop 

20
ข้อผิดพลาดคอมไพเลอร์ Swift:“ ส่วนหัวที่ไม่ใช่แบบแยกส่วนภายในโมดูลกรอบงาน”
ตอนนี้ฉันต้องการย้ายกรอบงาน ObjC ของฉันไปที่ Swift และฉันได้รับข้อผิดพลาดดังต่อไปนี้: include of non-modular header inside framework module 'SOGraphDB' การอ้างอิงคือไฟล์ส่วนหัวซึ่งเพิ่งกำหนดโปรโตคอลและฉันใช้ไฟล์ส่วนหัวนี้ในบางคลาสเพื่อใช้โปรโตคอลนี้ ดูเหมือนว่าจะเกี่ยวข้องกับคุณสมบัติของโมดูล แต่ในขณะนี้ยังไม่ชัดเจนว่าจะแก้ไขอย่างไรคุณรู้วิธีแก้ปัญหาหรือไม่? UPDATE: นี่เป็นข้อผิดพลาดของคอมไพเลอร์ Swift อัปเดต 2: การแก้ไขอย่างรวดเร็ว (แต่ไม่ได้แก้ไขสาเหตุของปัญหา) คือการตั้งค่าการตั้งค่าต่อไปนี้เป็นใช่: CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = ใช่

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