JitsiMeet iOS中不调用alloc即可使用JitsiMeetView类的逻辑是什么?
实现原理说明
1. 类方法调用的合理性
你看到的+setPropsInViews:是Objective-C中的类方法(语法上以+声明的方法属于类本身,不需要实例化对象即可调用),不需要alloc创建实例后再调用:
- 你提到的
[[JitsiMeetView alloc] setPropsInViews:[conferenceOptions asProps]]是实例方法的调用写法,但是该方法在分类中是类方法声明,所以直接通过类名调用完全符合语法规则。 - 方法名中的
Views为复数形式,也明确暗示了该方法的作用是操作多个JitsiMeetView实例,而非单个实例。
2. 方法的内部逻辑
从配套提供的接口可以反推该方法的实现逻辑:
- JitsiMeetView类内部维护了一个全局的存活实例集合,
+viewForExternalAPIScope:就是用来根据标识查找对应实例的内部工具方法。 - 调用
+setPropsInViews:时,SDK会遍历所有当前存活的JitsiMeetView实例,批量将传入的配置参数同步更新到每个实例上,不需要开发者手动获取实例再逐一设置。
3. 找不到JitsiMeetView+Private.m的原因
你看到的@interface JitsiMeetView ()是类扩展(匿名分类),不属于命名分类:
- 命名分类的声明格式为
@interface 类名 (分类名),一般需要单独的.m文件编写实现。 - 类扩展是类的私有接口补充,对应的方法实现直接写在主类
JitsiMeetView.m的@implementation块中即可,不需要单独的实现文件,所以你找不到单独的JitsiMeetView+Private.m。
内容的提问来源于stack exchange,提问作者Alwaysblue
相关产品推荐
相关产品推荐

