# 初始化相关 (/zh-CN/api-reference/rtc/ios/initialize)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="toc_initialize"></a>

<a id="api_irtcengine_create"></a>

<a id="ariaid-title2"></a>

## sharedEngineWithAppId\:delegate: [#sharedenginewithappiddelegate]

创建并初始化 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。

<a id="api_irtcengine_create__prototype"></a>

```objc
+ (instancetype _Nonnull)sharedEngineWithAppId:(NSString * _Nonnull)appId
                                     delegate:(id<AgoraRtcEngineDelegate> _Nullable)delegate NS_SWIFT_NAME(sharedEngine(withAppId:delegate:));
```

<a id="api_irtcengine_create__detailed_desc"></a>

你可以使用该方法创建并初始化 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。该类中所有方法均为异步执行，建议你在同一线程中调用这些方法。

:::note
注：

- 在调用其他 API 之前，必须先调用该方法创建 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 对象。
- 你可以通过该方法或 [sharedEngineWithConfig\:delegate:](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_initialize) 方法创建 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。与该方法相比，[sharedEngineWithConfig\:delegate:](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_initialize) 支持更多配置，例如指定连接区域和设置日志文件。
- 每个 App 仅支持创建一个 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。
:::

<a id="api_irtcengine_create__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="appid"></a>
<Parameter name="appId">

声网为你的项目签发的 App ID。只有使用相同 App ID 的用户才能加入同一个频道并进行通信。一个 App ID 只能用于创建一个 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。若需更换 App ID，你需要先调用 [destroy](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_release) 方法销毁当前实例，然后再创建新的实例。

</Parameter>
<a id="delegate"></a>
<Parameter name="delegate">

[AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 的事件回调处理器。详见 [AgoraRtcEngineDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengineeventhandler)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_create__return_values"></a>

### 返回值 [#返回值]

- 方法调用成功，返回 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 对象。
- 方法调用失败，返回一个其内部引擎字段为 nil 的 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 对象。你可以通过 [delegate](/zh-CN/api-reference/rtc/ios/channel#api_irtcengine_delegate) 的 [rtcEngine\:didOccurError:](/zh-CN/api-reference/rtc/ios/channel#callback_irtcengineeventhandler_onerror) 回调获取错误码。

### 所属接口类 [#所属接口类]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_destroy1"></a>

<a id="ariaid-title3"></a>

## destroy: [#destroy]

销毁 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例并释放相关资源。

<a id="api_irtcengine_destroy1__prototype"></a>

```objc
+ (void)destroy:(void (^ _Nullable)(void))engineReleasedBlock NS_SWIFT_NAME(destroy(_:));
```

<a id="api_irtcengine_destroy1__detailed_desc"></a>

:::info[自从]
自 v4.6.0 版本新增。
:::

当你不再需要实时通信时，调用此方法以释放 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例及其相关资源，使这些资源可用于其他操作。推荐在语音或视频通话场景中使用。

<a id="api_irtcengine_destroy1__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="enginereleasedblock"></a>
<Parameter name="engineReleasedBlock">

当 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例被销毁时触发的回调，用于配置同步或异步销毁：

- 非 nil：异步销毁。方法会立即返回，但引擎资源可能尚未完全释放。引擎销毁后会触发 `engineReleasedBlock` 回调。
- nil：同步销毁。方法仅在引擎资源完全释放后才返回。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-1]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_initialize"></a>

<a id="ariaid-title4"></a>

<a id="sharedEngineWithConfig"></a>

## sharedEngineWithConfig\:delegate: [#sharedenginewithconfigdelegate]

创建并初始化 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。

<a id="api_irtcengine_initialize__prototype"></a>

```objc
+ (instancetype _Nonnull)sharedEngineWithConfig:(AgoraRtcEngineConfig * _Nonnull)config
                                       delegate:(id<AgoraRtcEngineDelegate> _Nullable)delegate NS_SWIFT_NAME(sharedEngine(with:delegate:));
```

<a id="api_irtcengine_initialize__detailed_desc"></a>

你可以通过调用此方法或调用 [sharedEngineWithAppId\:delegate:](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_create) 来创建 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。与 [sharedEngineWithAppId\:delegate:](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_create) 不同，此方法在创建 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例时支持更多配置，例如指定连接区域和设置日志文件。

:::note
注： [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 每个 App 仅支持创建一个实例。[AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 提供的所有方法均为异步执行。声网建议你在同一线程中调用这些方法。
:::

<a id="api_irtcengine_initialize__timing"></a>

### 调用时机 [#调用时机]

在调用其他 API 之前，必须先调用此方法创建 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 对象。

<a id="api_irtcengine_initialize__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="config"></a>
<Parameter name="config">

用于配置 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例的参数。详见 [AgoraRtcEngineConfig](/zh-CN/api-reference/rtc/ios/class-rtcengineconfig)。

</Parameter>
<a id="delegate-1"></a>
<Parameter name="delegate">

[AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 的事件回调处理器。详见 [AgoraRtcEngineDelegate](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengineeventhandler)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_initialize__return_values"></a>

### 返回值 [#返回值-1]

- 方法调用成功时，返回初始化后的 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 对象。
- 方法调用失败时，返回一个其内部引擎字段为 nil 的 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 对象。你可以通过 [delegate](/zh-CN/api-reference/rtc/ios/channel#api_irtcengine_delegate) 的 [rtcEngine\:didOccurError:](/zh-CN/api-reference/rtc/ios/channel#callback_irtcengineeventhandler_onerror) 回调获取错误码。

### 所属接口类 [#所属接口类-2]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_release"></a>

<a id="ariaid-title5"></a>

## destroy [#destroy-1]

释放 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。

<a id="api_irtcengine_release__prototype"></a>

```objc
+ (void)destroy NS_SWIFT_NAME(destroy());
```

<a id="api_irtcengine_release__detailed_desc"></a>

该方法会释放 SDK 使用的所有资源。适用于用户偶尔进行语音或视频通话的场景。当你不再进行通话时，可以通过该方法释放资源，以便用于其他操作。成功调用该方法后，将无法再使用 SDK 中的任何方法或回调。如需再次使用实时通信功能，必须调用 [sharedEngineWithConfig\:delegate:](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_initialize) 方法重新创建 [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine) 实例。

:::note
注： 声网不建议你在 SDK 的任何回调中调用 [destroy](/zh-CN/api-reference/rtc/ios/initialize#api_irtcengine_release) 方法。否则，SDK 需等待回调返回结果后才能释放资源，可能导致死锁。
:::

### 所属接口类 [#所属接口类-3]

- [AgoraRtcEngineKit](/zh-CN/api-reference/rtc/ios/rtc-interface-class#class_irtcengine)
