類 A 需要調用類 B 的實例方法 - (void)post。
// B.h
@interface B : NSObject
- (void)post; // 實例方法,需在 .h 公開
@end
// A.m
#import "B.h"
B *b = [[B alloc] init]; // 初始化
[b post]; // 調用
// B.h
@interface B : NSObject
+ (void)post; // 類方法,+ 號開頭
@end
// A.m
#import "B.h"
[B post]; // 直接通過類名調用
| 場景 | 推薦 |
|---|---|
| 方法需訪問實例變量/狀態 | 實例方法 |
| 純工具函數、無狀態、單例入口 | 類方法 |
| 多處複用、需保持狀態 | 單例模式 + (instancetype)sharedInstance |
.h 公開方法聲明 → 編譯報錯 No visible @interface#import "B.h" → 找不到類定義[B post] 調用 → 崩潰 unrecognized selector sent to classiOS 類間調用核心:實例方法需初始化對象,類方法直接用類名。務必在 .h 公開接口,.m 實現細節,#import 引入頭文件。理解這兩點,即可解決 90% 的類調用問題。