第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在實(shí)現(xiàn)API時(shí),如何避免在塊中捕獲self?

在實(shí)現(xiàn)API時(shí),如何避免在塊中捕獲self?

忽然笑 2019-08-06 12:43:02
在實(shí)現(xiàn)API時(shí),如何避免在塊中捕獲self?我有一個(gè)工作的應(yīng)用程序,我正在努力將其轉(zhuǎn)換為Xcode 4.2中的ARC。其中一個(gè)預(yù)檢警告涉及self強(qiáng)烈捕獲導(dǎo)致保留周期的塊。我已經(jīng)制作了一個(gè)簡(jiǎn)單的代碼示例來說明問題。我相信我理解這意味著什么,但我不確定實(shí)現(xiàn)這種情況的“正確”或推薦方法。self是MyAPI類的一個(gè)實(shí)例下面的代碼被簡(jiǎn)化為僅顯示與我的問題相關(guān)的對(duì)象和塊的交互假設(shè)MyAPI從遠(yuǎn)程源獲取數(shù)據(jù),MyDataProcessor處理該數(shù)據(jù)并生成輸出處理器配置有塊以通信進(jìn)度和狀態(tài)代碼示例:// code sampleself.delegate = aDelegate;self.dataProcessor = [[MyDataProcessor alloc] init];self.dataProcessor.progress = ^(CGFloat percentComplete) {    [self.delegate myAPI:self isProcessingWithProgress:percentComplete];};self.dataProcessor.completion = ^{    [self.delegate myAPIDidFinish:self];    self.dataProcessor = nil;};// start the processor - processing happens asynchronously and the processor is released in the completion block[self.dataProcessor startProcessing];問題:我在做什么“錯(cuò)誤”和/或如何修改它以符合ARC慣例?
查看完整描述

3 回答

?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

當(dāng)您肯定將來會(huì)破壞循環(huán)時(shí),還可以選擇禁止警告:

#pragma clang diagnostic push#pragma clang diagnostic ignored "-Warc-retain-cycles"self.progressBlock = ^(CGFloat percentComplete) {
    [self.delegate processingWithProgress:percentComplete];}#pragma clang diagnostic pop

這樣你就不必四處尋找__weak,self別名和明確的ivar前綴。


查看完整回答
反對(duì) 回復(fù) 2019-08-06
?
叮當(dāng)貓咪

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊

對(duì)于常見的解決方案,我在預(yù)編譯頭中定義了這些。避免捕獲并仍然通過避免使用來啟用編譯器幫助id

#define BlockWeakObject(o) __typeof(o) __weak#define BlockWeakSelf BlockWeakObject(self)

然后在代碼中你可以做:

BlockWeakSelf weakSelf = self;self.dataProcessor.completion = ^{
    [weakSelf.delegate myAPIDidFinish:weakSelf];
    weakSelf.dataProcessor = nil;};


查看完整回答
反對(duì) 回復(fù) 2019-08-06
  • 3 回答
  • 0 關(guān)注
  • 505 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)