# iOS开发规范
*****
1. 我们会提前将位置、摄像头、相册、麦克风、多媒体等权限加入到项目中,如需其他权限,请提前告知天马工场。
2. 组件中的类文件和类名需要添加前缀,避免跟其他组件冲突。
3. 组件中的controller控制器都需要继承TMViewController。
4. 在组件开发时:如遇到需要网络请求,或者主题色等功能时,都需要从框架获取,获取方式可以参考 《iOS SDK API 》章节,在做组件开始时,因为我们的主题色是从后台下发,所以需要你们提前在AppDelegate 做下模拟操作:
```
[TMEngineConfig instance].themeColor = [UIColor redColor];
```
5. 各组件中需要与其余组件对接或提供给其余组件调用的,需要通过属性“paramStr”传递参数,默认通过init初始化,不添加其他初始化方法,不添加其他属性,不添加接口方法,其余初始化请重写init方法。(一般情况下只会通过init初始化,并只会传递paramStr参数),在需要获取这些参数时,可以通过以下方法获取:
```
/**
* 用于对Controller的参数传递,标准json格式等字符串
*/
@property (nonatomic, copy) NSString *paramStr;
/**
* 根据ParamStr自动转换成字典(若paramStr为标准json格式)
*/
- (NSDictionary *)paramDict;
```
6. 组件以Pod形式交付。
7. 为了更好的集成,所以在开发过程中请注意耦合性。不要有太多依赖。
8. 因为组件依赖JPush,而JPush不支持i386,所以在制作Pod的时候需要处理一下i386问题。例如在测试阶段可以在podspec中添加如下代码来避免:
```
s.xcconfig = {
'VALID_ARCHS' => 'arm64 x86_64',
}
```
在本地测试通过无误后,去除上述代码,通过修改validator.rb文件,绕过pod验证并push到 pod trunk。具体方法可自行百度、谷歌。
9. 在制作Pod时,如果有依赖其他第三方库,为了避免组件之间版本冲突,原则上要求必须支持最新的版本,如这样写:s.dependency 'MBProgressHUD',而不去限制版本,如:s.dependency 'MBProgressHUD', '~> 1.1.0'.
10. 在商城提交pod是,请按照下面方式提交,需要指定特定版本:
```
pod 'TMSDK', '0.0.3'
```