在 iOS 项目中删除 AppDelegate

Posted

技术标签:

【中文标题】在 iOS 项目中删除 AppDelegate【英文标题】:Deleting AppDelegate in iOS project 【发布时间】:2017-07-13 05:02:48 【问题描述】:

我从项目中删除 AppDelegate 会有什么结果?

ios 项目中 AppDelegate 有什么用?

AppDelegate 是否会导致 .app 的内存大小增加?

【问题讨论】:

What is the AppDelegate for and how do I know when to use it?的可能重复 appDelegate 也是iOS App 设计中的一个重要类。如果您面临内存大小的增加,请检查并调试这些发生的原因 您可以删除它并尝试会发生什么,当您需要一个新的时,只需将其从垃圾箱中添加回您的项目,或者让 Xcode 为您生成新的。 是的,它确实略微增加了内存大小,但这是值得的!!!!三通 【参考方案1】:

每个基于 C 的应用程序的入口点都是主函数,iOS 应用程序也不例外。不同的是,对于 iOS 应用程序,您不需要自己编写 main 函数。相反,Xcode 会将此函数创建为基本项目的一部分。除了少数例外,你永远不应该改变 Xcode 提供的 main 函数的实现。

iOS 应用的主要功能

#import <UIKit/UIKit.h>
#import "AppDelegate.h"

int main(int argc, char * argv[])

    @autoreleasepool 
        return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
    

UIApplicationMain 函数,将控制权交给 UIKit 框架,通过创建应用程序的核心对象、从可用的故事板文件加载应用程序的用户界面、调用您的自定义代码以便您拥有有机会进行一些初始设置,并启动应用的运行循环。

应用委托是您的自定义代码的核心。此对象与UIApplication 对象协同工作,以处理应用程序初始化、状态转换和许多高级应用程序事件。这个对象也是唯一保证在每个应用程序中都存在的对象,因此它通常用于设置应用程序的初始数据结构。

因此,如果我们从 Xcode 项目中删除 AppDelegate 文件,所有上述进程都将停止,因此应用程序将无法启动。

查看苹果开发者网站以获取有关App Life Cycle 的更多信息。

【讨论】:

解释得更好:) 因此+1 感谢@SandeepBhandari 我正在尝试!! @luckyShubhra XCode 项目中哪里可以看到 UIApplicationMain 函数解释? @PradeepSingh 在 Swift 5.3 中有一个新的“@main”属性,它可以让你控制入口点在项目中的位置,而不仅仅是 main.swift。只能有一个主条目,不能有一个 main.swift 文件和一个属性“@main”。有关详细信息,请参阅github.com/apple/swift-evolution/blob/master/proposals/…。【参考方案2】:

不,您不能删除 App-Delegate 文件,它由 X 代码在项目创建时生成。一旦您删除它,您将无法运行您的应用程序。

这个 App-Delegate 文件没有增加大小

【讨论】:

是的,这不会增加尺寸,有一个疑问......它是否会崩溃?【参考方案3】:

没有 AppDelegate 就无法运行应用程序

启动时间是应用生命周期中的一个重要环节。发射时 时间,应用委托负责执行任何自定义代码 需要初始化您的应用程序。例如,应用程序委托 通常创建应用程序的初始数据结构,注册任何 所需的服务,并根据应用程序的初始用户界面进行调整 任何可用的数据。 Apple Doc

【讨论】:

以上是关于在 iOS 项目中删除 AppDelegate的主要内容,如果未能解决你的问题,请参考以下文章

iOS Spring board,如 Grid View,在 iOS 5 中具有拖动和移动项目 + 删除选项

iOS 15.3+ SwiftUI中List子项目禁止被删除但头部仍显示删除按钮的解决

iOS 15.3+ SwiftUI中List子项目禁止被删除但头部仍显示删除按钮的解决

如何从 Phonegap iOS 项目中删除未使用的框架和库?

iOS 删除已经配置的类库和移除CocoaPods

iOS:查找要从服务器中删除的项目的 NSArray