首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 開發中 typedef 簡化 Block 類型聲明的最佳實踐

     編輯:程式設計綜合問答

場景

View1 按鈕點擊 → 回調 View2 方法,傳遞參數。

代碼模式


// View1.h
typedef void (^ButtonActionBlock)(NSInteger tag); // 簡化 Block 類型
@property (nonatomic, copy) ButtonActionBlock actionBlock;

// View1.m 按鈕事件
- (IBAction)btnClick:(UIButton *)sender {
    if (self.actionBlock) self.actionBlock(sender.tag);
}

// View2.m 創建 View1 並設置回調
- (void)setupView1 {
    View1 *v1 = [[View1 alloc] init];
    v1.actionBlock = ^(NSInteger tag) {
        // 這裡處理 View1 按鈕點擊,tag 為按鈕 tag
        [self handleButtonTag:tag];
    };
    [self.view addSubview:v1];
}

優勢

  • `typedef` 讓 Block 類型語義化、可復用、參數清晰。
  • `copy` 屬性修飾符確保 Block 被複製到堆上,避免棧上失效。
  • 解耦:View1 不依賴 View2 具體類,只定義回調契約。

注意

  • Block 內捕獲 `self` 易循環引用,用 `__weak typeof(self) weakSelf = self;`。
  • 多參數 Block 建議封裝為字典或自定義對象傳遞。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved