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

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

5
ฉันจะตั้งค่าสถานะวิธีที่เลิกใช้ใน Objective-C 2.0 ได้อย่างไร
ฉันเป็นส่วนหนึ่งของทีมพัฒนาแอพ iPad ที่ค่อนข้างใหญ่และมีคลาสที่แตกต่างกันมากมายที่เราสร้างขึ้นมา ปัญหาคือวิธีการบางอย่างตอนนี้ล้าสมัยไปแล้วและฉันไม่ต้องการเพียงแค่เอาออกเพราะฉันรู้ว่าบางส่วนของระบบโดยรวมใช้วิธีการ ... แต่มีตัวแปรที่ดีกว่า (ใหม่กว่า) ซึ่งควรใช้ แทน (เก่าบางคนเรียกจริง ๆ ใหม่ แต่อินเทอร์เฟซสำหรับคลาสโดยรวมจะเริ่มยุ่ง) มีวิธีที่ฉันสามารถทำเครื่องหมายวิธีการบางอย่างเป็นค่าเสื่อมราคา (เช่น@deprecatedใน Java และ[Obsolete]ใน. NET) ฉันเห็นว่า Apple ใช้ Availability.h และมีแท็กเช่น __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_NA,__MAC_NA,__IPHONE_2_0,__IPHONE_3_0); ... นี่เป็นวิธีเดียวที่จะทำได้ (+ เป็นที่ App Store ปลอดภัยหรือไม่) หรือมีทางเลือกอื่นที่จะตั้งค่าสถานะการเตือนใน Xcode หรือไม่

21
แปลงเป้าหมาย -c typedef ให้เทียบเท่ากับสตริง
สมมติว่าฉันมี typedef ประกาศในไฟล์. h ของฉันเช่น: typedef enum { JSON, XML, Atom, RSS } FormatType; ฉันต้องการสร้างฟังก์ชั่นที่แปลงค่าตัวเลขของ typedef เป็นสตริง ตัวอย่างเช่นหากข้อความ[self toString:JSON]ถูกส่ง มันจะส่งคืน 'JSON' ฟังก์ชันจะมีลักษณะดังนี้: -(NSString *) toString:(FormatType)formatType { //need help here return []; } บังเอิญถ้าฉันลองไวยากรณ์นี้ [self toString:FormatType.JSON]; เพื่อส่งค่า typedef ไปยังเมธอดฉันได้รับข้อผิดพลาด ฉันพลาดอะไรไป
141 c  objective-c  enums  typedef 

4
สัญลักษณ์ @ แสดงอะไรในวัตถุประสงค์ -c
ฉันกำลังเรียนรู้ถึงวัตถุประสงค์ -c และยังคงชนกับสัญลักษณ์ @ มันถูกใช้ในสถานการณ์ต่าง ๆ ตัวอย่างเช่นตอนต้นของสตริงหรือวิธีการสังเคราะห์ accessor สัญลักษณ์ @ หมายถึงอะไรในวัตถุประสงค์ -c
141 objective-c 

1
“ FOUNDATION_EXPORT” กับ“ extern”
ฉันอยากจะถามว่าอะไรคือเหตุผลเบื้องหลังการใช้FOUNDATION_EXPORTแทนที่จะเป็นexternในโครงการObjective C ฉันได้ตรวจสอบคำถามนี้แล้วและการใช้งานFOUNDATION_EXPORTได้รับคะแนนสูงสุด 340 คะแนน (อันดับที่ 1) ในขณะที่ใช้externเพียง 74 คะแนน (อันดับที่ 2) มีใครอธิบายได้ไหม มีเหตุผลในทางปฏิบัติสำหรับการใช้FOUNDATION_EXPORTแทนexternหรือไม่? ขอบคุณ!

23
ปรับแต่งส่วนหัวของ UITableView
ฉันต้องการปรับแต่งUITableViewส่วนหัวสำหรับแต่ละส่วน จนถึงตอนนี้ฉันได้ลงมือปฏิบัติ -(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section นี้UITabelViewDelegateวิธีการ สิ่งที่ฉันต้องการทำคือรับส่วนหัวปัจจุบันสำหรับแต่ละส่วนและเพียงเพิ่มUILabelเป็นมุมมองย่อย จนถึงตอนนี้ฉันไม่สามารถทำเช่นนั้นได้ เนื่องจากฉันไม่พบสิ่งใดที่จะได้รับส่วนหัวเริ่มต้น คำถามแรกมีวิธีใดที่จะได้รับส่วนหัวเริ่มต้นหรือไม่ ถ้าเป็นไปไม่ได้ฉันต้องสร้างมุมมองคอนเทนเนอร์ซึ่งเป็นUIViewแต่คราวนี้ฉันต้องตั้งค่าสีพื้นหลังเริ่มต้นสีเงา ฯลฯ เพราะถ้าคุณดูอย่างระมัดระวังในส่วนหัวของส่วนมันปรับแต่งแล้ว ฉันจะรับค่าเริ่มต้นเหล่านี้สำหรับส่วนหัวของแต่ละส่วนได้อย่างไร ขอบคุณทุกคน.

3
พิมพ์ใหญ่หรือเปลี่ยนแปลงกรณี NSString ใน Objective-C
NSMutableArrayผมสงสัยว่าจะใช้ประโยชน์สตริงที่พบในวัตถุใน NSArrayมีสตริง'April'ที่ดัชนี 2. ผมอยากให้เรื่องนี้จะมีการเปลี่ยนแปลงไป 'APRIL' มีอะไรแบบนี้ง่ายไหม? viewNoteDateMonth.text = [[displayDate objectAtIndex:2] capitalized];

8
พื้นหลัง UIWebView ถูกตั้งค่าเป็น Clear Color แต่ไม่โปร่งใส
ฉันกำลังพัฒนาแอปพลิเคชั่น iOS 4 โดยใช้ iOS SDK เวอร์ชันล่าสุดและ XCode 4.2 ฉันมี XIB กับที่UIWebViewมีอัลฟา = 1.0 , พื้นหลังชุดสีใสและทึบแสงไม่ได้ตั้งค่า ใน XIB นี้ฉันตั้งค่าภาพเป็นพื้นหลังด้วยรหัสนี้: - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"AboutBackground.png"]]; self.view.backgroundColor = background; [background release]; } return self; } The …

11
มีคอลเลกชันที่พิมพ์อย่างมากใน Objective-C หรือไม่
ฉันยังใหม่กับการเขียนโปรแกรม Mac / iPhone และ Objective-C ใน C # และ Java เรามี "generics" คลาสการรวบรวมที่สมาชิกสามารถเป็นประเภทที่ประกาศเท่านั้น ตัวอย่างเช่นใน C # Dictionary<int, MyCustomObject> สามารถมีคีย์ที่เป็นจำนวนเต็มและค่าที่เป็นประเภท MyCustomObject เท่านั้น มีกลไกที่คล้ายกันอยู่ใน Objective-C หรือไม่?

18
วัตถุประสงค์ -C: อ่านไฟล์ทีละบรรทัด
วิธีที่เหมาะสมในการจัดการกับไฟล์ข้อความขนาดใหญ่ใน Objective-C คืออะไร? สมมติว่าฉันต้องอ่านแต่ละบรรทัดแยกกันและต้องการที่จะถือว่าแต่ละบรรทัดเป็น NSString วิธีที่มีประสิทธิภาพที่สุดในการทำเช่นนี้คืออะไร? ทางออกหนึ่งคือการใช้วิธี NSString: + (id)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error แล้วแยกบรรทัดด้วยตัวแบ่งบรรทัดใหม่แล้ววนซ้ำองค์ประกอบในอาร์เรย์ อย่างไรก็ตามดูเหมือนว่าจะไม่มีประสิทธิภาพพอสมควร ไม่มีวิธีง่ายๆในการจัดการไฟล์เป็นสตรีมระบุแต่ละบรรทัดแทนที่จะอ่านมันทั้งหมดในครั้งเดียวหรือไม่? ค่อนข้างชอบจาวาของ java.io.BufferedReader

9
แนวทางปฏิบัติที่ดีที่สุดโดยใช้ NSLocalizedString
ฉัน (เหมือนคนอื่น ๆ ทั้งหมด) ใช้NSLocalizedStringเพื่อแปลแอปของฉัน น่าเสียดายที่มี "ข้อเสีย" หลายประการ (ไม่จำเป็นต้องเป็นความผิดของ NSLocalizedString เอง) รวมถึง ไม่มีการเติมข้อความอัตโนมัติสำหรับสตริงใน Xcode สิ่งนี้ทำให้การทำงานไม่เพียง แต่เกิดข้อผิดพลาดได้ง่าย แต่ยังน่าเบื่อ คุณอาจสิ้นสุดการกำหนดสตริงใหม่เนื่องจากคุณไม่รู้ว่ามีสตริงเทียบเท่าอยู่แล้ว (เช่น "โปรดป้อนรหัสผ่าน" และ "ป้อนรหัสผ่านก่อน") เช่นเดียวกับปัญหาการเติมข้อความอัตโนมัติคุณต้อง "จดจำ" / คัดลอกสตริงความคิดเห็นไม่เช่นgenstringนั้นจะมีหลายความคิดเห็นสำหรับหนึ่งสตริง หากคุณต้องการใช้genstringหลังจากที่คุณแปลสตริงบางส่วนแล้วคุณต้องระวังไม่ให้สูญเสียการแปลท้องถิ่นของคุณ สายเดียวกันกระจัดกระจายตลอดโครงการของคุณทั้งหมด ตัวอย่างเช่นคุณใช้NSLocalizedString(@"Abort", @"Cancel action")ทุกที่จากนั้นตรวจสอบรหัสขอให้คุณเปลี่ยนชื่อสตริงNSLocalizedString(@"Cancel", @"Cancel action")เพื่อให้รหัสสอดคล้องกันมากขึ้น สิ่งที่ฉันทำ (และหลังจากการค้นหาบางอย่างดังนั้นฉันคิดว่าหลายคนทำสิ่งนี้) คือการมีstrings.hไฟล์แยกต่างหากที่ฉัน#defineทุกรหัสภาษา ตัวอย่างเช่น // In strings.h #define NSLS_COMMON_CANCEL NSLocalizedString(@"Cancel", nil) // Somewhere else NSLog(@"%@", NSLS_COMMON_CANCEL); สิ่งนี้จะช่วยให้การสร้างโค้ดเสร็จสมบูรณ์เป็นที่เดียวในการเปลี่ยนชื่อตัวแปร …

18
รับปุ่มคลิกภายใน UITableViewCell
ฉันมีตัวควบคุมมุมมองที่มีมุมมองตารางและปลายปากกาแยกต่างหากสำหรับแม่แบบเซลล์ตาราง แม่แบบเซลล์มีปุ่มบางปุ่ม ฉันต้องการเข้าถึงการคลิกปุ่มพร้อมกับดัชนีของเซลล์ที่คลิกภายในตัวควบคุมมุมมองที่ฉันได้กำหนดมุมมองตาราง ดังนั้นผมจึงมีViewController.hและViewController.mที่ผมมีUITableViewและTableTemplate.h, TableTemplate.mและTableTemplate.xibที่ฉันมีจะงอยที่กำหนดไว้ ViewController.mฉันต้องการเหตุการณ์คลิกปุ่มที่มีค่าดัชนีเซลล์ใน ความช่วยเหลือเกี่ยวกับฉันจะทำอย่างไร

15
วิธีการตั้งศูนย์ข้อความของ UIButton ใช้ IB
ฉันไม่สามารถตั้งชื่อ UIButton โดยใช้ IB เป็นศูนย์กลางได้ ชื่อของฉันคือหลายบรรทัด มันให้เช่นนี้ แต่ฉันต้องการแบบนี้ ฉันได้ให้พื้นที่ในนี้ แต่ฉันไม่ต้องการที่จะทำ เนื่องจากมันไม่ได้จัดตำแหน่งอย่างแน่นอนสำหรับบางกรณีและฉันรู้ว่ามีคุณสมบัติของ UILabel ในการตั้งค่าการจัดตำแหน่ง แต่ฉันไม่ต้องการเขียนโค้ดสำหรับสิ่งนั้น .. เพียงแค่ต้องการตั้งค่าทุกอย่างจาก IB ขอบคุณ

26
จัดกึ่งกลางเนื้อหาของ UIScrollView เมื่อเล็กลง
ฉันมีส่วนUIImageViewในUIScrollViewที่ฉันใช้สำหรับซูมและเลื่อน หากรูปภาพ / เนื้อหาของมุมมองเลื่อนใหญ่กว่ามุมมองเลื่อนทุกอย่างทำงานได้ดี อย่างไรก็ตามเมื่อภาพมีขนาดเล็กกว่ามุมมองเลื่อนภาพจะติดที่มุมซ้ายบนของมุมมองเลื่อน ฉันต้องการให้มันอยู่กึ่งกลางเช่นแอพ Photos ความคิดหรือตัวอย่างเกี่ยวกับการรักษาเนื้อหาของUIScrollViewศูนย์กลางเมื่อมันเล็กลง ฉันกำลังทำงานกับ iPhone 3.0 รหัสต่อไปนี้ใช้งานได้เกือบ ภาพกลับไปที่มุมซ้ายบนถ้าฉันบีบมันหลังจากถึงระดับการซูมขั้นต่ำ - (void)loadView { [super loadView]; // set up main scroll view imageScrollView = [[UIScrollView alloc] initWithFrame:[[self view] bounds]]; [imageScrollView setBackgroundColor:[UIColor blackColor]]; [imageScrollView setDelegate:self]; [imageScrollView setBouncesZoom:YES]; [[self view] addSubview:imageScrollView]; UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"WeCanDoIt.png"]]; [imageView setTag:ZOOM_VIEW_TAG]; …

10
การเปลี่ยนขนาดตัวอักษรสำหรับส่วนหัวของ UITableView
ใครช่วยกรุณาแนะนำฉันเกี่ยวกับวิธีที่ง่ายที่สุดในการเปลี่ยนขนาดตัวอักษรสำหรับข้อความในส่วนหัวของ UITableView? ฉันมีหัวเรื่องของส่วนที่ใช้งานโดยใช้วิธีการต่อไปนี้: - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section จากนั้นฉันเข้าใจวิธีการเปลี่ยนความสูงส่วนหัวของส่วนโดยใช้วิธีนี้: - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section ฉันมีเซลล์ UITableView บรรจุโดยใช้วิธีนี้: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath อย่างไรก็ตามฉันติดอยู่กับวิธีเพิ่มขนาดตัวอักษร - หรือสำหรับรูปแบบตัวอักษร - ของส่วนหัวของข้อความ มีคนช่วยได้ไหม ขอบคุณ


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