คำถามติดแท็ก automatic-ref-counting

Automatic Reference Counting (ARC) เป็นคุณสมบัติคอมไพเลอร์ที่ให้การจัดการหน่วยความจำอัตโนมัติของ Objective-C และ Swift

7
แนวทางปฏิบัติที่ดีที่สุดสำหรับ iOS 5 (ปล่อย / คงไว้?)
ในฐานะที่เป็นโปรแกรมเมอร์ iPhone เริ่มต้นแนวทางปฏิบัติที่ดีที่สุดในการเขียนแอพเพื่อใช้กับ iOS 5 หรือเวอร์ชันเก่ากว่าคืออะไร โดยเฉพาะอย่างยิ่งฉันควรใช้การเผยแพร่ / การเก็บรักษาข้อมูลต่อไปหรือฉันควรเพิกเฉยต่อสิ่งนั้น มันสำคัญหรือไม่?

3
แทนที่ตัวตั้งค่าด้วยส่วนโค้ง
@interface Article : NSObject @property (nonatomic, strong) NSString *imageURLString; @end @implementation Class @synthesize imageURLString = _imageURLString; - (void)setImageURLString:(NSString *)imageURLString { _imageURLString = imageURLString; //do something else } ฉันแทนที่ setter อย่างถูกต้องเมื่อเปิดใช้งาน ARC หรือไม่?

2
ARC รองรับคิวการจัดส่งหรือไม่
ฉันกำลังอ่านเอกสารของ Apple เกี่ยวกับ "Memory Management for Dispatch Queues": แม้ว่าคุณจะใช้แอปพลิเคชันที่เก็บรวบรวมขยะคุณยังต้องรักษาและปล่อยคิวการจัดส่งและวัตถุจัดส่งอื่น Grand Central Dispatch ไม่รองรับโมเดลการรวบรวมขยะสำหรับการเรียกคืนหน่วยความจำ ฉันรู้ว่า ARC ไม่ใช่คนเก็บขยะ แต่ฉันอยากแน่ใจว่าฉันไม่จำเป็นต้อง dispatch_retain และ dispatch_release dispatch_queue_t ของฉัน

5
แอตทริบิวต์ setter คุณสมบัติที่อ่อนแอและแข็งแกร่งใน Objective-C
อะไรคือความแตกต่างระหว่างแอตทริบิวต์ setter คุณสมบัติที่อ่อนแอและแข็งแกร่งใน Objective-C? @property(retain, [weak/strong]) __attribute__((NSObject)) CFDictionaryRef myDictionary; ผลกระทบและประโยชน์คืออะไร? ฉันได้ยินมาว่าจุดอ่อนไม่สามารถใช้ได้ใน iOS 4 และเราจำเป็นต้องใช้การกำหนด อ่อนแอคล้ายกับการมอบหมายหรือไม่?

1
NSString เป็น CFStringRef และ CFStringRef เป็น NSString ใน ARC?
ฉันกำลังพยายามทำความเข้าใจวิธีที่ถูกต้องในการรับNSStringจากCFStringRefARC หรือไม่? เช่นเดียวกันกับการไปในทิศทางตรงกันข้ามCFStringRefกับNSStringใน ARC? อะไรคือวิธีที่ถูกต้องในการทำเช่นนี้โดยไม่ทำให้หน่วยความจำรั่วไหล?

3
ฉันจะแทนที่การอ้างอิงที่อ่อนแอเมื่อใช้ ARC และกำหนดเป้าหมายเป็น iOS 4.0 ได้อย่างไร
ฉันได้เริ่มพัฒนาแอป iOS ตัวแรกของฉันด้วย Xcode 4.2 และกำหนดเป้าหมายเป็น iOS 5.0 ด้วยเทมเพลต "แอปพลิเคชันยูทิลิตี้" (ซึ่งมาพร้อมกับ FlipsideViewController) ฉันอ่านว่าเนื่องจาก ARC เป็นคุณสมบัติเวลาคอมไพล์จึงควรเข้ากันได้กับ iOS 4 ด้วยดังนั้นฉันจึงพยายามกำหนดเป้าหมายแอปของฉันเป็น 4.3 และลองรวบรวม เมื่อทำเช่นนั้นฉันได้รับข้อผิดพลาดนี้: FlipsideViewController.m: error: Automatic Reference Counting Issue: เป้าหมายการปรับใช้ปัจจุบันไม่รองรับการอ้างอิง __weak อัตโนมัติ มันอ้างถึงบรรทัดนี้: @synthesize delegate = _delegate; ตัวแปรนั้นถูกประกาศเป็น: @property (weak, nonatomic) IBOutlet id <FlipsideViewControllerDelegate> delegate; ฉันเข้าใจว่า "การอ้างอิงที่ไม่เหมาะสม" ไม่ได้รับการสนับสนุนใน iOS 4 แต่ฉันไม่เข้าใจจริงๆว่าทำไมฉันถึงต้องการใช้การอ้างอิงที่อ่อนแอเพื่อเริ่มต้นและฉันไม่สามารถคิดได้ว่าฉันจะเขียนสิ่งต่าง ๆ …

3
KVO และ ARC วิธีการเอาออก
คุณจะลบผู้สังเกตการณ์ออกจากวัตถุภายใต้ARC ได้อย่างไร? เราเพิ่งเพิ่มผู้สังเกตการณ์และลืมที่จะลบออกหรือไม่? ถ้าเราไม่จัดการหน่วยความจำด้วยตนเองอีกต่อไปเราจะลาออกจากการสังเกตการณ์ที่ไหน? ตัวอย่างเช่นบนตัวควบคุมมุมมอง: [self.view addObserver:self forKeyPath:@"self.frame" options:NSKeyValueObservingOptionNew context:nil]; ก่อนหน้านี้ฉันจะเรียกremoveObserver:ด้วยdeallocวิธีของตัวควบคุมมุมมอง

7
การส่งคำขอ HTTP POST บน iOS
ฉันพยายามส่งโพสต์ HTTP พร้อมกับแอปพลิเคชัน iOS ที่ฉันกำลังพัฒนา แต่การพุชไม่ถึงเซิร์ฟเวอร์แม้ว่าฉันจะได้รับรหัส 200 เป็นการตอบสนอง (จากการเชื่อมต่อ url) ฉันไม่เคยได้รับคำตอบจากเซิร์ฟเวอร์หรือเซิร์ฟเวอร์ตรวจพบโพสต์ของฉัน (เซิร์ฟเวอร์ตรวจพบโพสต์ที่มาจาก Android) ฉันใช้ ARC แต่ตั้งค่า pd และ urlConnection ให้แข็งแกร่ง นี่คือรหัสของฉันสำหรับส่งคำขอ NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@",dk.baseURL,@"daantest"]]]; [request setHTTPMethod:@"POST"]; [request setValue:@"text/xml" forHTTPHeaderField:@"Content-type"]; NSString *sendString = @"<data><item>Item 1</item><item>Item 2</item></data>"; [request setValue:[NSString stringWithFormat:@"%d", [sendString length]] forHTTPHeaderField:@"Content-length"]; [request setHTTPBody:[sendString dataUsingEncoding:NSUTF8StringEncoding]]; PushDelegate …

4
ARC ห้ามอ็อบเจ็กต์ Objective-C ในโครงสร้างหรือยูเนี่ยนแม้จะทำเครื่องหมายไฟล์ -fno-objc-arc
ARC ห้ามวัตถุ Objective-C ในโครงสร้างหรือสหภาพแรงงานแม้จะทำเครื่องหมายไฟล์ -fno-objc-arc? ทำไมจึงเป็นเช่นนั้น? ฉันมีข้อสันนิษฐานว่าถ้าคุณทำเครื่องหมาย -fno-objc-arc คุณจะไม่มีข้อ จำกัด นี้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.