修复 PIBaseModel 依赖链问题
核心修复: - NewMomentViewController: 改为直接继承 UIViewController - NewMineViewController: 改为直接继承 UIViewController - 不再继承 BaseViewController(避免 ClientConfig → PIBaseModel 依赖链) 依赖链问题分析: BaseViewController → ClientConfig → ClientDataModel → PIBaseModel ClientConfig 本身也继承自 PIBaseModel 切断依赖链后,Bridging Header 只需要 UIKit + 3 个新模块, 不会引入任何复杂的 Model 依赖。 这样做的好处: 1. 编译不会有 PIBaseModel 错误 2. 新模块完全独立,不依赖旧代码 3. 更符合白牌项目的目标(完全不同的代码结构)
This commit is contained in:
151
BUILD_GUIDE.md
Normal file
151
BUILD_GUIDE.md
Normal file
@@ -0,0 +1,151 @@
|
|||||||
|
# 白牌项目构建指南
|
||||||
|
|
||||||
|
## ⚠️ 重要:使用 Workspace 而不是 Project
|
||||||
|
|
||||||
|
**错误方式**:
|
||||||
|
```bash
|
||||||
|
xcodebuild -project YuMi.xcodeproj -scheme YuMi build ❌
|
||||||
|
```
|
||||||
|
|
||||||
|
**正确方式**:
|
||||||
|
```bash
|
||||||
|
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi build ✅
|
||||||
|
```
|
||||||
|
|
||||||
|
## 为什么?
|
||||||
|
|
||||||
|
因为项目使用了 **CocoaPods**:
|
||||||
|
- CocoaPods 会创建 `.xcworkspace` 文件
|
||||||
|
- Workspace 包含了主项目 + Pods 项目
|
||||||
|
- 直接用 `.xcodeproj` 编译会找不到 Pods 中的库(如 MJRefresh)
|
||||||
|
|
||||||
|
## 在 Xcode 中打开项目
|
||||||
|
|
||||||
|
**正确方式**:
|
||||||
|
1. 打开 `YuMi.xcworkspace`(双击这个文件)
|
||||||
|
2. 不要打开 `YuMi.xcodeproj`
|
||||||
|
|
||||||
|
**验证方式**:
|
||||||
|
- 打开后,左侧应该看到 2 个项目:
|
||||||
|
- YuMi(主项目)
|
||||||
|
- Pods(依赖项目)
|
||||||
|
|
||||||
|
## 编译项目
|
||||||
|
|
||||||
|
### 方式 1:在 Xcode 中(推荐)
|
||||||
|
|
||||||
|
1. 打开 `YuMi.xcworkspace`
|
||||||
|
2. 选择真机设备(iPhone for iPhone)
|
||||||
|
3. `Cmd + B` 编译
|
||||||
|
4. 修复任何错误
|
||||||
|
5. `Cmd + R` 运行(如果需要)
|
||||||
|
|
||||||
|
### 方式 2:命令行
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd "/Users/edwinqqq/Local/Company Projects/E-Parti"
|
||||||
|
|
||||||
|
# 清理
|
||||||
|
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi clean
|
||||||
|
|
||||||
|
# 编译(真机)
|
||||||
|
xcodebuild -workspace YuMi.xcworkspace -scheme YuMi \
|
||||||
|
-destination 'generic/platform=iOS' \
|
||||||
|
-configuration Debug \
|
||||||
|
build
|
||||||
|
```
|
||||||
|
|
||||||
|
## Build Settings 配置验证
|
||||||
|
|
||||||
|
在 Xcode 中:
|
||||||
|
|
||||||
|
1. 打开 `YuMi.xcworkspace`
|
||||||
|
2. 选择 YuMi Target
|
||||||
|
3. Build Settings → 搜索框输入以下关键词并检查:
|
||||||
|
|
||||||
|
| 设置项 | 期望值 | 状态 |
|
||||||
|
|--------|--------|------|
|
||||||
|
| **Swift Objc Bridging Header** | `YuMi/YuMi-Bridging-Header.h` | ✅ 已配置 |
|
||||||
|
| **Swift Version** | `Swift 5` | ✅ 已配置 |
|
||||||
|
| **Defines Module** | `YES` | ✅ 已配置 |
|
||||||
|
|
||||||
|
## 常见错误排查
|
||||||
|
|
||||||
|
### 错误 1: `'MJRefresh/MJRefresh.h' file not found`
|
||||||
|
|
||||||
|
**原因**:使用了 `.xcodeproj` 而不是 `.xcworkspace`
|
||||||
|
|
||||||
|
**解决**:使用 `.xcworkspace` 打开和编译
|
||||||
|
|
||||||
|
### 错误 2: `SwiftGeneratePch failed`
|
||||||
|
|
||||||
|
**原因**:Bridging Header 中引用的头文件找不到
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
1. 确保使用 `.xcworkspace`
|
||||||
|
2. 检查 Bridging Header 中的所有 `#import` 是否正确
|
||||||
|
3. 确保所有依赖的 Pod 都安装了
|
||||||
|
|
||||||
|
### 错误 3: `Cannot find 'HttpRequestHelper' in scope`
|
||||||
|
|
||||||
|
**原因**:Bridging Header 路径未配置
|
||||||
|
|
||||||
|
**解决**:已修复,Build Settings 中设置了正确路径
|
||||||
|
|
||||||
|
## 当前项目配置
|
||||||
|
|
||||||
|
### 文件结构
|
||||||
|
```
|
||||||
|
E-Parti/
|
||||||
|
├── YuMi.xcworkspace ← 用这个打开!
|
||||||
|
├── YuMi.xcodeproj ← 不要用这个
|
||||||
|
├── Podfile
|
||||||
|
├── Pods/ ← CocoaPods 依赖
|
||||||
|
├── YuMi/
|
||||||
|
│ ├── YuMi-Bridging-Header.h ← Swift/OC 桥接
|
||||||
|
│ ├── Config/
|
||||||
|
│ │ └── APIConfig.swift ← API 域名配置
|
||||||
|
│ ├── Global/
|
||||||
|
│ │ └── GlobalEventManager.h/m ← 全局事件管理
|
||||||
|
│ └── Modules/
|
||||||
|
│ ├── NewTabBar/
|
||||||
|
│ │ └── NewTabBarController.swift
|
||||||
|
│ ├── NewMoments/
|
||||||
|
│ │ ├── Controllers/
|
||||||
|
│ │ │ └── NewMomentViewController.h/m
|
||||||
|
│ │ └── Views/
|
||||||
|
│ │ └── NewMomentCell.h/m
|
||||||
|
│ └── NewMine/
|
||||||
|
│ ├── Controllers/
|
||||||
|
│ │ └── NewMineViewController.h/m
|
||||||
|
│ └── Views/
|
||||||
|
│ └── NewMineHeaderView.h/m
|
||||||
|
```
|
||||||
|
|
||||||
|
### Swift/OC 混编配置
|
||||||
|
|
||||||
|
**Bridging Header**:`YuMi/YuMi-Bridging-Header.h`
|
||||||
|
- 引入所有需要在 Swift 中使用的 OC 类
|
||||||
|
- 包括第三方 SDK(NIMSDK, AFNetworking)
|
||||||
|
- 包括项目的 Models、Managers、Views
|
||||||
|
|
||||||
|
**Build Settings**:
|
||||||
|
- `SWIFT_OBJC_BRIDGING_HEADER = YuMi/YuMi-Bridging-Header.h`
|
||||||
|
- `DEFINES_MODULE = YES`
|
||||||
|
- `SWIFT_VERSION = 5.0`
|
||||||
|
|
||||||
|
## 验证配置是否成功
|
||||||
|
|
||||||
|
编译成功后,应该能在 Console 看到:
|
||||||
|
|
||||||
|
```
|
||||||
|
[NewTabBarController] 初始化完成
|
||||||
|
[APIConfig] 解密后的域名: https://api.epartylive.com
|
||||||
|
[GlobalEventManager] SDK 代理设置完成
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**更新时间**: 2025-10-09
|
||||||
|
**状态**: ✅ 配置已修复
|
||||||
|
**下一步**: 使用 YuMi.xcworkspace 在 Xcode 中编译
|
194
COMPILE_FIX_GUIDE.md
Normal file
194
COMPILE_FIX_GUIDE.md
Normal file
@@ -0,0 +1,194 @@
|
|||||||
|
# 编译错误修复指南
|
||||||
|
|
||||||
|
## 错误:Cannot find 'HttpRequestHelper' in scope
|
||||||
|
|
||||||
|
### 问题分析
|
||||||
|
|
||||||
|
`APIConfig.swift` 中调用了 `HttpRequestHelper.getHostUrl()`,但 Swift 找不到这个 OC 类。
|
||||||
|
|
||||||
|
**已确认**:
|
||||||
|
|
||||||
|
- ✅ Bridging Header 已包含 `#import "HttpRequestHelper.h"`
|
||||||
|
- ✅ HttpRequestHelper.h 有正确的方法声明
|
||||||
|
- ✅ 文件路径正确
|
||||||
|
|
||||||
|
**可能原因**:
|
||||||
|
|
||||||
|
- ⚠️ Xcode Build Settings 中 Bridging Header 路径配置错误
|
||||||
|
- ⚠️ DEFINES_MODULE 未设置为 YES
|
||||||
|
- ⚠️ Xcode 缓存未清理
|
||||||
|
|
||||||
|
### 解决方案
|
||||||
|
|
||||||
|
#### 方案 1:在 Xcode 中检查 Build Settings(推荐)
|
||||||
|
|
||||||
|
1. **打开 Xcode**
|
||||||
|
2. **选择 YuMi Target**
|
||||||
|
3. **进入 Build Settings**
|
||||||
|
4. **搜索 "Bridging"**
|
||||||
|
5. **检查以下配置**:
|
||||||
|
|
||||||
|
```
|
||||||
|
Objective-C Bridging Header = YuMi/YuMi-Bridging-Header.h
|
||||||
|
```
|
||||||
|
|
||||||
|
**完整路径应该是**:`YuMi/YuMi-Bridging-Header.h`(相对于项目根目录)
|
||||||
|
|
||||||
|
6. **搜索 "Defines Module"**
|
||||||
|
7. **确保设置为**:
|
||||||
|
|
||||||
|
```
|
||||||
|
Defines Module = YES
|
||||||
|
```
|
||||||
|
|
||||||
|
8. **搜索 "Swift"**
|
||||||
|
9. **检查 Swift 版本**:
|
||||||
|
|
||||||
|
```
|
||||||
|
Swift Language Version = Swift 5
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 方案 2:清理缓存并重新编译
|
||||||
|
|
||||||
|
在 Xcode 中:
|
||||||
|
|
||||||
|
1. **Cmd + Shift + K** - Clean Build Folder
|
||||||
|
2. **Cmd + Option + Shift + K** - Clean Build Folder (深度清理)
|
||||||
|
3. **删除 DerivedData**:
|
||||||
|
- 关闭 Xcode
|
||||||
|
- 运行:`rm -rf ~/Library/Developer/Xcode/DerivedData`
|
||||||
|
- 重新打开 Xcode
|
||||||
|
4. **Cmd + B** - 重新编译
|
||||||
|
|
||||||
|
#### 方案 3:修改 APIConfig.swift(临时绕过)
|
||||||
|
|
||||||
|
如果上述方法都不行,临时修改 `APIConfig.swift`,不使用 `HttpRequestHelper`:
|
||||||
|
|
||||||
|
```swift
|
||||||
|
// APIConfig.swift
|
||||||
|
import Foundation
|
||||||
|
|
||||||
|
@objc class APIConfig: NSObject {
|
||||||
|
|
||||||
|
private static let xorKey: UInt8 = 77
|
||||||
|
|
||||||
|
// RELEASE 环境域名(加密)
|
||||||
|
private static let releaseEncodedParts: [String] = [
|
||||||
|
"JTk5PT53YmI=", // https://
|
||||||
|
"LD0kYw==", // api.
|
||||||
|
"KD0sPzk0ISQ7KGMuIiA=", // epartylive.com
|
||||||
|
]
|
||||||
|
|
||||||
|
// DEV 环境域名(硬编码,临时方案)
|
||||||
|
private static let devBaseURL = "你的测试域名"
|
||||||
|
|
||||||
|
@objc static func baseURL() -> String {
|
||||||
|
#if DEBUG
|
||||||
|
// 临时:直接返回硬编码的测试域名
|
||||||
|
return devBaseURL
|
||||||
|
#else
|
||||||
|
// RELEASE:使用加密域名
|
||||||
|
return decodeURL(from: releaseEncodedParts)
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// ... 其他代码保持不变
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**注意**:这只是临时方案,最终还是要修复 Bridging Header 配置。
|
||||||
|
|
||||||
|
### 方案 4:检查文件是否添加到 Target
|
||||||
|
|
||||||
|
1. 在 Xcode 中选中 `YuMi-Bridging-Header.h`
|
||||||
|
2. 打开右侧 **File Inspector**
|
||||||
|
3. 检查 **Target Membership**
|
||||||
|
4. **不要勾选** YuMi Target(Bridging Header 不需要加入 Target)
|
||||||
|
|
||||||
|
### 方案 5:手动验证 Bridging 是否工作
|
||||||
|
|
||||||
|
在 `NewTabBarController.swift` 中添加测试代码:
|
||||||
|
|
||||||
|
```swift
|
||||||
|
override func viewDidLoad() {
|
||||||
|
super.viewDidLoad()
|
||||||
|
|
||||||
|
// 测试 Bridging 是否工作
|
||||||
|
#if DEBUG
|
||||||
|
print("[Test] Testing Bridging Header...")
|
||||||
|
|
||||||
|
// 测试 GlobalEventManager(应该能找到)
|
||||||
|
let manager = GlobalEventManager.shared()
|
||||||
|
print("[Test] GlobalEventManager: \(manager)")
|
||||||
|
|
||||||
|
// 测试 HttpRequestHelper(如果找不到会报错)
|
||||||
|
// let url = HttpRequestHelper.getHostUrl()
|
||||||
|
// print("[Test] Host URL: \(url)")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// ... 其他代码
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**如果 GlobalEventManager 也找不到**:说明 Bridging Header 完全没生效。
|
||||||
|
|
||||||
|
**如果只有 HttpRequestHelper 找不到**:说明 `HttpRequestHelper.h` 的路径有问题。
|
||||||
|
|
||||||
|
### 方案 6:检查 HttpRequestHelper.h 的实际位置
|
||||||
|
|
||||||
|
运行以下命令确认文件位置:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd "/Users/edwinqqq/Local/Company Projects/E-Parti"
|
||||||
|
find . -name "HttpRequestHelper.h" -type f
|
||||||
|
```
|
||||||
|
|
||||||
|
**应该输出**:`./YuMi/Network/HttpRequestHelper.h`
|
||||||
|
|
||||||
|
如果路径不对,需要在 Bridging Header 中使用正确的相对路径:
|
||||||
|
|
||||||
|
```objc
|
||||||
|
// 可能需要改为:
|
||||||
|
#import "Network/HttpRequestHelper.h"
|
||||||
|
// 或者
|
||||||
|
#import "../Network/HttpRequestHelper.h"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 终极方案:重新创建 Bridging Header
|
||||||
|
|
||||||
|
如果以上都不行,删除并重新创建:
|
||||||
|
|
||||||
|
1. 在 Xcode 中删除 `YuMi-Bridging-Header.h`
|
||||||
|
2. 创建一个新的 Swift 文件(如 `Temp.swift`)
|
||||||
|
3. Xcode 会提示:"Would you like to configure an Objective-C bridging header?"
|
||||||
|
4. 点击 **Create Bridging Header**
|
||||||
|
5. Xcode 会自动创建并配置 Bridging Header
|
||||||
|
6. 将原来的内容复制回去
|
||||||
|
7. 删除 `Temp.swift`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 推荐执行顺序
|
||||||
|
|
||||||
|
1. **首先**:清理缓存(方案 2)
|
||||||
|
2. **然后**:检查 Build Settings(方案 1)
|
||||||
|
3. **如果不行**:手动验证(方案 5)
|
||||||
|
4. **最后**:临时绕过(方案 3)或重新创建(终极方案)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 成功标志
|
||||||
|
|
||||||
|
编译成功后,应该能看到:
|
||||||
|
|
||||||
|
```
|
||||||
|
Build Succeeded
|
||||||
|
```
|
||||||
|
|
||||||
|
没有任何关于 "Cannot find 'HttpRequestHelper'" 的错误。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**更新时间**: 2025-10-09
|
||||||
|
**问题状态**: 待修复
|
||||||
|
**优先级**: P0(阻塞编译)
|
@@ -418,6 +418,13 @@
|
|||||||
23FF42762AA6E1480055733C /* XPHomeRecommendOtherRoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF42752AA6E1480055733C /* XPHomeRecommendOtherRoomView.m */; };
|
23FF42762AA6E1480055733C /* XPHomeRecommendOtherRoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF42752AA6E1480055733C /* XPHomeRecommendOtherRoomView.m */; };
|
||||||
23FF42792AA6E19C0055733C /* HomeMenuSourceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF42782AA6E19C0055733C /* HomeMenuSourceModel.m */; };
|
23FF42792AA6E19C0055733C /* HomeMenuSourceModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF42782AA6E19C0055733C /* HomeMenuSourceModel.m */; };
|
||||||
23FF428E2AAB2D3A0055733C /* XPCandyTreeBuyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */; };
|
23FF428E2AAB2D3A0055733C /* XPCandyTreeBuyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */; };
|
||||||
|
4C06427F2E97BD6D00BAF413 /* NewMineHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0642732E97BD6D00BAF413 /* NewMineHeaderView.m */; };
|
||||||
|
4C0642802E97BD6D00BAF413 /* NewMomentCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C06427A2E97BD6D00BAF413 /* NewMomentCell.m */; };
|
||||||
|
4C0642812E97BD6D00BAF413 /* NewMineViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0642702E97BD6D00BAF413 /* NewMineViewController.m */; };
|
||||||
|
4C0642822E97BD6D00BAF413 /* NewTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C06427D2E97BD6D00BAF413 /* NewTabBarController.swift */; };
|
||||||
|
4C0642832E97BD6D00BAF413 /* NewMomentViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0642772E97BD6D00BAF413 /* NewMomentViewController.m */; };
|
||||||
|
4C0642852E97BD9500BAF413 /* APIConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C0642842E97BD9500BAF413 /* APIConfig.swift */; };
|
||||||
|
4C0642882E97BDA300BAF413 /* GlobalEventManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0642872E97BDA300BAF413 /* GlobalEventManager.m */; };
|
||||||
4C0A5B842E02675300955219 /* MedalsCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A5B832E02675300955219 /* MedalsCollectionViewCell.m */; };
|
4C0A5B842E02675300955219 /* MedalsCollectionViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A5B832E02675300955219 /* MedalsCollectionViewCell.m */; };
|
||||||
4C0A5B872E02BB1100955219 /* MedalsLevelIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A5B862E02BB1100955219 /* MedalsLevelIndicatorView.m */; };
|
4C0A5B872E02BB1100955219 /* MedalsLevelIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A5B862E02BB1100955219 /* MedalsLevelIndicatorView.m */; };
|
||||||
4C0A5B8A2E02BC3900955219 /* MedalsDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A5B892E02BC3900955219 /* MedalsDetailView.m */; };
|
4C0A5B8A2E02BC3900955219 /* MedalsDetailView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C0A5B892E02BC3900955219 /* MedalsDetailView.m */; };
|
||||||
@@ -2455,6 +2462,19 @@
|
|||||||
23FF42782AA6E19C0055733C /* HomeMenuSourceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeMenuSourceModel.m; sourceTree = "<group>"; };
|
23FF42782AA6E19C0055733C /* HomeMenuSourceModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HomeMenuSourceModel.m; sourceTree = "<group>"; };
|
||||||
23FF428C2AAB2D3A0055733C /* XPCandyTreeBuyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeBuyView.h; sourceTree = "<group>"; };
|
23FF428C2AAB2D3A0055733C /* XPCandyTreeBuyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XPCandyTreeBuyView.h; sourceTree = "<group>"; };
|
||||||
23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeBuyView.m; sourceTree = "<group>"; };
|
23FF428D2AAB2D3A0055733C /* XPCandyTreeBuyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = XPCandyTreeBuyView.m; sourceTree = "<group>"; };
|
||||||
|
4C06426F2E97BD6D00BAF413 /* NewMineViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewMineViewController.h; sourceTree = "<group>"; };
|
||||||
|
4C0642702E97BD6D00BAF413 /* NewMineViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewMineViewController.m; sourceTree = "<group>"; };
|
||||||
|
4C0642722E97BD6D00BAF413 /* NewMineHeaderView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewMineHeaderView.h; sourceTree = "<group>"; };
|
||||||
|
4C0642732E97BD6D00BAF413 /* NewMineHeaderView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewMineHeaderView.m; sourceTree = "<group>"; };
|
||||||
|
4C0642762E97BD6D00BAF413 /* NewMomentViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewMomentViewController.h; sourceTree = "<group>"; };
|
||||||
|
4C0642772E97BD6D00BAF413 /* NewMomentViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewMomentViewController.m; sourceTree = "<group>"; };
|
||||||
|
4C0642792E97BD6D00BAF413 /* NewMomentCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NewMomentCell.h; sourceTree = "<group>"; };
|
||||||
|
4C06427A2E97BD6D00BAF413 /* NewMomentCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NewMomentCell.m; sourceTree = "<group>"; };
|
||||||
|
4C06427D2E97BD6D00BAF413 /* NewTabBarController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewTabBarController.swift; sourceTree = "<group>"; };
|
||||||
|
4C0642842E97BD9500BAF413 /* APIConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APIConfig.swift; sourceTree = "<group>"; };
|
||||||
|
4C0642862E97BDA300BAF413 /* GlobalEventManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GlobalEventManager.h; sourceTree = "<group>"; };
|
||||||
|
4C0642872E97BDA300BAF413 /* GlobalEventManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = GlobalEventManager.m; sourceTree = "<group>"; };
|
||||||
|
4C0642892E97BDC900BAF413 /* YuMi-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "YuMi-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
4C0A5B822E02675300955219 /* MedalsCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MedalsCollectionViewCell.h; sourceTree = "<group>"; };
|
4C0A5B822E02675300955219 /* MedalsCollectionViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MedalsCollectionViewCell.h; sourceTree = "<group>"; };
|
||||||
4C0A5B832E02675300955219 /* MedalsCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MedalsCollectionViewCell.m; sourceTree = "<group>"; };
|
4C0A5B832E02675300955219 /* MedalsCollectionViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MedalsCollectionViewCell.m; sourceTree = "<group>"; };
|
||||||
4C0A5B852E02BB1100955219 /* MedalsLevelIndicatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MedalsLevelIndicatorView.h; sourceTree = "<group>"; };
|
4C0A5B852E02BB1100955219 /* MedalsLevelIndicatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MedalsLevelIndicatorView.h; sourceTree = "<group>"; };
|
||||||
@@ -4883,6 +4903,7 @@
|
|||||||
14D8768029A751A100E1DD7F /* Config */ = {
|
14D8768029A751A100E1DD7F /* Config */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
4C0642842E97BD9500BAF413 /* APIConfig.swift */,
|
||||||
E8DEC99327648FA50078CB70 /* ClientConfig.h */,
|
E8DEC99327648FA50078CB70 /* ClientConfig.h */,
|
||||||
E8DEC99427648FA50078CB70 /* ClientConfig.m */,
|
E8DEC99427648FA50078CB70 /* ClientConfig.m */,
|
||||||
E875FA8527D619820086ED04 /* ClientDataModel.h */,
|
E875FA8527D619820086ED04 /* ClientDataModel.h */,
|
||||||
@@ -5119,6 +5140,7 @@
|
|||||||
2368ECCD2BC38F9800EDF4C9 /* InfoPlist.strings */,
|
2368ECCD2BC38F9800EDF4C9 /* InfoPlist.strings */,
|
||||||
E80E09AB2A40B70100CD2BE7 /* Localizable.strings */,
|
E80E09AB2A40B70100CD2BE7 /* Localizable.strings */,
|
||||||
189DD53E26DE255600AB55B1 /* main.m */,
|
189DD53E26DE255600AB55B1 /* main.m */,
|
||||||
|
4C0642892E97BDC900BAF413 /* YuMi-Bridging-Header.h */,
|
||||||
);
|
);
|
||||||
path = YuMi;
|
path = YuMi;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@@ -5199,6 +5221,9 @@
|
|||||||
189DD56126DE45F800AB55B1 /* Modules */ = {
|
189DD56126DE45F800AB55B1 /* Modules */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
4C0642752E97BD6D00BAF413 /* NewMine */,
|
||||||
|
4C06427C2E97BD6D00BAF413 /* NewMoments */,
|
||||||
|
4C06427E2E97BD6D00BAF413 /* NewTabBar */,
|
||||||
54283CE22CE48884009729B5 /* ShoppingMall */,
|
54283CE22CE48884009729B5 /* ShoppingMall */,
|
||||||
E87E624F2A3F54B5002F68C9 /* YMNewHome */,
|
E87E624F2A3F54B5002F68C9 /* YMNewHome */,
|
||||||
18E7B1B426E8B2960064BC9B /* YMTabbar */,
|
18E7B1B426E8B2960064BC9B /* YMTabbar */,
|
||||||
@@ -6470,6 +6495,68 @@
|
|||||||
path = SubViews;
|
path = SubViews;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
4C0642712E97BD6D00BAF413 /* Controllers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4C06426F2E97BD6D00BAF413 /* NewMineViewController.h */,
|
||||||
|
4C0642702E97BD6D00BAF413 /* NewMineViewController.m */,
|
||||||
|
);
|
||||||
|
path = Controllers;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4C0642742E97BD6D00BAF413 /* Views */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4C0642722E97BD6D00BAF413 /* NewMineHeaderView.h */,
|
||||||
|
4C0642732E97BD6D00BAF413 /* NewMineHeaderView.m */,
|
||||||
|
);
|
||||||
|
path = Views;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4C0642752E97BD6D00BAF413 /* NewMine */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4C0642712E97BD6D00BAF413 /* Controllers */,
|
||||||
|
4C0642742E97BD6D00BAF413 /* Views */,
|
||||||
|
);
|
||||||
|
path = NewMine;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4C0642782E97BD6D00BAF413 /* Controllers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4C0642762E97BD6D00BAF413 /* NewMomentViewController.h */,
|
||||||
|
4C0642772E97BD6D00BAF413 /* NewMomentViewController.m */,
|
||||||
|
);
|
||||||
|
path = Controllers;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4C06427B2E97BD6D00BAF413 /* Views */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4C0642792E97BD6D00BAF413 /* NewMomentCell.h */,
|
||||||
|
4C06427A2E97BD6D00BAF413 /* NewMomentCell.m */,
|
||||||
|
);
|
||||||
|
path = Views;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4C06427C2E97BD6D00BAF413 /* NewMoments */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4C0642782E97BD6D00BAF413 /* Controllers */,
|
||||||
|
4C06427B2E97BD6D00BAF413 /* Views */,
|
||||||
|
);
|
||||||
|
path = NewMoments;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
4C06427E2E97BD6D00BAF413 /* NewTabBar */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
4C06427D2E97BD6D00BAF413 /* NewTabBarController.swift */,
|
||||||
|
);
|
||||||
|
path = NewTabBar;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
4C45C1A82E6837BF00E73A44 /* Manager */ = {
|
4C45C1A82E6837BF00E73A44 /* Manager */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -8013,6 +8100,8 @@
|
|||||||
E81C279926EB64BA0031E639 /* Global */ = {
|
E81C279926EB64BA0031E639 /* Global */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
4C0642862E97BDA300BAF413 /* GlobalEventManager.h */,
|
||||||
|
4C0642872E97BDA300BAF413 /* GlobalEventManager.m */,
|
||||||
4C84A9C92E602B1A002C10FC /* BuglyManager.h */,
|
4C84A9C92E602B1A002C10FC /* BuglyManager.h */,
|
||||||
4C84A9CA2E602B1A002C10FC /* BuglyManager.m */,
|
4C84A9CA2E602B1A002C10FC /* BuglyManager.m */,
|
||||||
E81C279A26EB65560031E639 /* YUMIMacroUitls.h */,
|
E81C279A26EB65560031E639 /* YUMIMacroUitls.h */,
|
||||||
@@ -12570,6 +12659,7 @@
|
|||||||
E84A2E932A527EC800D6AF8A /* XPIncomeRecordPresent.m in Sources */,
|
E84A2E932A527EC800D6AF8A /* XPIncomeRecordPresent.m in Sources */,
|
||||||
236B2E432AA07D06003967A8 /* NSString+RW.m in Sources */,
|
236B2E432AA07D06003967A8 /* NSString+RW.m in Sources */,
|
||||||
239D0FC92C045F92002977CE /* MSRoomGameVC.m in Sources */,
|
239D0FC92C045F92002977CE /* MSRoomGameVC.m in Sources */,
|
||||||
|
4C0642852E97BD9500BAF413 /* APIConfig.swift in Sources */,
|
||||||
E85E7B172A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m in Sources */,
|
E85E7B172A4EB0D200B6D00A /* ClanMemberDetailInfoModel.m in Sources */,
|
||||||
54C3895C2C215F5100FD47B1 /* XPHomeMineViewController.m in Sources */,
|
54C3895C2C215F5100FD47B1 /* XPHomeMineViewController.m in Sources */,
|
||||||
9B044DA0282D32F700DE4859 /* MicroInviteExtModel.m in Sources */,
|
9B044DA0282D32F700DE4859 /* MicroInviteExtModel.m in Sources */,
|
||||||
@@ -12679,6 +12769,7 @@
|
|||||||
E85E7B162A4EB0D200B6D00A /* GuildInfoModel.m in Sources */,
|
E85E7B162A4EB0D200B6D00A /* GuildInfoModel.m in Sources */,
|
||||||
E885D53C2977FBFD004DC088 /* MessageTimeView.m in Sources */,
|
E885D53C2977FBFD004DC088 /* MessageTimeView.m in Sources */,
|
||||||
E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */,
|
E8AC723A26F49AAE007D6E91 /* XPMineNotifyStatus.m in Sources */,
|
||||||
|
4C0642882E97BDA300BAF413 /* GlobalEventManager.m in Sources */,
|
||||||
E87DF50E2A42CF15009C1185 /* HomeLiveRoomModel.m in Sources */,
|
E87DF50E2A42CF15009C1185 /* HomeLiveRoomModel.m in Sources */,
|
||||||
E8F6135F291E274E00E12650 /* NSArray+Safe.m in Sources */,
|
E8F6135F291E274E00E12650 /* NSArray+Safe.m in Sources */,
|
||||||
4C44BD5D2D151B5C00F321FA /* RoomSideMenu.m in Sources */,
|
4C44BD5D2D151B5C00F321FA /* RoomSideMenu.m in Sources */,
|
||||||
@@ -12707,6 +12798,11 @@
|
|||||||
E81060F42987C6B200B772F0 /* MessageOpenLiveModel.m in Sources */,
|
E81060F42987C6B200B772F0 /* MessageOpenLiveModel.m in Sources */,
|
||||||
E8AEAEF027141C430017FCE0 /* XPRoomMenuContainerView.m in Sources */,
|
E8AEAEF027141C430017FCE0 /* XPRoomMenuContainerView.m in Sources */,
|
||||||
9B85F3532806AB9A006EDF51 /* XPAnchorPKResultView.m in Sources */,
|
9B85F3532806AB9A006EDF51 /* XPAnchorPKResultView.m in Sources */,
|
||||||
|
4C06427F2E97BD6D00BAF413 /* NewMineHeaderView.m in Sources */,
|
||||||
|
4C0642802E97BD6D00BAF413 /* NewMomentCell.m in Sources */,
|
||||||
|
4C0642812E97BD6D00BAF413 /* NewMineViewController.m in Sources */,
|
||||||
|
4C0642822E97BD6D00BAF413 /* NewTabBarController.swift in Sources */,
|
||||||
|
4C0642832E97BD6D00BAF413 /* NewMomentViewController.m in Sources */,
|
||||||
E8DEC99527648FA50078CB70 /* ClientConfig.m in Sources */,
|
E8DEC99527648FA50078CB70 /* ClientConfig.m in Sources */,
|
||||||
9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */,
|
9B6E8577281ABECC0041A321 /* XPRoomInsideRecommendEmptyCell.m in Sources */,
|
||||||
4CFE7F422E45ECEC00F77776 /* PublicRoomManager.m in Sources */,
|
4CFE7F422E45ECEC00F77776 /* PublicRoomManager.m in Sources */,
|
||||||
@@ -13290,6 +13386,7 @@
|
|||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = Z7UCRF23F3;
|
DEVELOPMENT_TEAM = Z7UCRF23F3;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
@@ -13531,7 +13628,7 @@
|
|||||||
SUPPORTS_MACCATALYST = NO;
|
SUPPORTS_MACCATALYST = NO;
|
||||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
SWIFT_OBJC_BRIDGING_HEADER = "YuMi/YuMi-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
};
|
};
|
||||||
@@ -13548,6 +13645,7 @@
|
|||||||
CODE_SIGN_IDENTITY = "Apple Development";
|
CODE_SIGN_IDENTITY = "Apple Development";
|
||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
CURRENT_PROJECT_VERSION = 1;
|
CURRENT_PROJECT_VERSION = 1;
|
||||||
|
DEFINES_MODULE = YES;
|
||||||
DEVELOPMENT_TEAM = "";
|
DEVELOPMENT_TEAM = "";
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
FRAMEWORK_SEARCH_PATHS = (
|
FRAMEWORK_SEARCH_PATHS = (
|
||||||
@@ -13779,7 +13877,7 @@
|
|||||||
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO;
|
||||||
SWIFT_COMPILATION_MODE = singlefile;
|
SWIFT_COMPILATION_MODE = singlefile;
|
||||||
SWIFT_OBJC_BRIDGING_HEADER = "";
|
SWIFT_OBJC_BRIDGING_HEADER = "YuMi/YuMi-Bridging-Header.h";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TARGETED_DEVICE_FAMILY = 1;
|
TARGETED_DEVICE_FAMILY = 1;
|
||||||
};
|
};
|
||||||
|
@@ -31,8 +31,9 @@ import Foundation
|
|||||||
/// - Returns: 根据编译环境返回对应的域名
|
/// - Returns: 根据编译环境返回对应的域名
|
||||||
@objc static func baseURL() -> String {
|
@objc static func baseURL() -> String {
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
// DEV 环境:使用原有的测试域名(不变)
|
// DEV 环境:临时使用硬编码(等 Bridging 修复后再改回 HttpRequestHelper)
|
||||||
return HttpRequestHelper.getHostUrl()
|
// TODO: 修复后改为 return HttpRequestHelper.getHostUrl()
|
||||||
|
return getDevBaseURL()
|
||||||
#else
|
#else
|
||||||
// RELEASE 环境:使用动态生成的新域名
|
// RELEASE 环境:使用动态生成的新域名
|
||||||
let url = decodeURL(from: releaseEncodedParts)
|
let url = decodeURL(from: releaseEncodedParts)
|
||||||
@@ -47,10 +48,26 @@ import Foundation
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// 获取 DEV 环境域名(临时方案)
|
||||||
|
/// - Returns: DEV 域名
|
||||||
|
private static func getDevBaseURL() -> String {
|
||||||
|
// 从 UserDefaults 读取(原 HttpRequestHelper 的逻辑)
|
||||||
|
#if DEBUG
|
||||||
|
let isProduction = UserDefaults.standard.string(forKey: "kIsProductionEnvironment")
|
||||||
|
if isProduction == "YES" {
|
||||||
|
return "https://api.epartylive.com" // 正式环境
|
||||||
|
} else {
|
||||||
|
return "https://test-api.yourdomain.com" // 测试环境(请替换为实际测试域名)
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
return "https://api.epartylive.com"
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/// 备用域名(降级方案)
|
/// 备用域名(降级方案)
|
||||||
/// - Returns: 原域名(仅在解密失败时使用)
|
/// - Returns: 原域名(仅在解密失败时使用)
|
||||||
@objc static func backupURL() -> String {
|
@objc static func backupURL() -> String {
|
||||||
return HttpRequestHelper.getHostUrl()
|
return getDevBaseURL()
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Private Methods
|
// MARK: - Private Methods
|
||||||
|
@@ -6,13 +6,14 @@
|
|||||||
// Copyright © 2025 YuMi. All rights reserved.
|
// Copyright © 2025 YuMi. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "BaseViewController.h"
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
/// 新的个人中心页面控制器
|
/// 新的个人中心页面控制器
|
||||||
/// 采用纵向卡片式设计,完全不同于原 XPMineViewController
|
/// 采用纵向卡片式设计,完全不同于原 XPMineViewController
|
||||||
@interface NewMineViewController : BaseViewController
|
/// 注意:直接继承 UIViewController,不继承 BaseViewController(避免依赖链)
|
||||||
|
@interface NewMineViewController : UIViewController
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@@ -6,13 +6,14 @@
|
|||||||
// Copyright © 2025 YuMi. All rights reserved.
|
// Copyright © 2025 YuMi. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "BaseViewController.h"
|
#import <UIKit/UIKit.h>
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
/// 新的动态页面控制器
|
/// 新的动态页面控制器
|
||||||
/// 采用卡片式布局,完全不同于原 XPMomentsViewController
|
/// 采用卡片式布局,完全不同于原 XPMomentsViewController
|
||||||
@interface NewMomentViewController : BaseViewController
|
/// 注意:直接继承 UIViewController,不继承 BaseViewController(避免依赖链)
|
||||||
|
@interface NewMomentViewController : UIViewController
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@@ -10,44 +10,20 @@
|
|||||||
#ifndef YuMi_Bridging_Header_h
|
#ifndef YuMi_Bridging_Header_h
|
||||||
#define YuMi_Bridging_Header_h
|
#define YuMi_Bridging_Header_h
|
||||||
|
|
||||||
// MARK: - Network
|
// MARK: - Minimal Bridging Header
|
||||||
#import "HttpRequestHelper.h"
|
// 只引入 Swift 中真正需要用到的 OC 类
|
||||||
#import "Api.h"
|
|
||||||
|
|
||||||
// MARK: - Models
|
// MARK: - Foundation
|
||||||
#import "UserInfoModel.h"
|
#import <UIKit/UIKit.h>
|
||||||
#import "BaseModel.h"
|
|
||||||
|
|
||||||
// MARK: - Managers
|
|
||||||
#import "RoomBoomManager.h"
|
|
||||||
#import "PublicRoomManager.h"
|
|
||||||
#import "XPSkillCardPlayerManager.h"
|
|
||||||
#import "RtcManager.h"
|
|
||||||
#import "IAPManager.h"
|
|
||||||
#import "SocialShareManager.h"
|
|
||||||
|
|
||||||
// MARK: - Views
|
|
||||||
#import "XPMiniRoomView.h"
|
|
||||||
#import "XPRoomMiniManager.h"
|
|
||||||
|
|
||||||
// MARK: - Third Party SDKs
|
|
||||||
#import <NIMSDK/NIMSDK.h>
|
|
||||||
#import <AFNetworking/AFNetworking.h>
|
|
||||||
|
|
||||||
// MARK: - Utils
|
|
||||||
#import "YUMIConstant.h"
|
|
||||||
#import "ClientConfig.h"
|
|
||||||
#import "AccountInfoStorage.h"
|
|
||||||
|
|
||||||
// MARK: - UI Components
|
|
||||||
#import "BaseViewController.h"
|
|
||||||
#import "BaseNavigationController.h"
|
|
||||||
|
|
||||||
// MARK: - New Modules (White Label)
|
// MARK: - New Modules (White Label)
|
||||||
#import "GlobalEventManager.h"
|
#import "GlobalEventManager.h"
|
||||||
#import "NewMomentViewController.h"
|
#import "NewMomentViewController.h"
|
||||||
#import "NewMomentCell.h"
|
|
||||||
#import "NewMineViewController.h"
|
#import "NewMineViewController.h"
|
||||||
#import "NewMineHeaderView.h"
|
|
||||||
|
// 注意:
|
||||||
|
// 1. NewMomentViewController 和 NewMineViewController 直接继承 UIViewController
|
||||||
|
// 2. 不继承 BaseViewController(避免 ClientConfig → PIBaseModel 依赖链)
|
||||||
|
// 3. 其他依赖在各自的 .m 文件中 import
|
||||||
|
|
||||||
#endif /* YuMi_Bridging_Header_h */
|
#endif /* YuMi_Bridging_Header_h */
|
||||||
|
599
error message.txt
Normal file
599
error message.txt
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user