您的位置:首页 > 其它

项目经验总结

2016-10-26 19:58 323 查看
项目经验总结
1.当你把一个View(这个view是用xib描述,内部控件采用的是自动布局)放在一个指定的位置时,运行后发现这个View并不在指定的位置,这是因为autoresizing有个自动伸缩的属性
解决方案
-(void)awarkFromeNib{
- self.autoresizingmask = UIViewautoresizingNone
}
2.如何减少第三方带来的风险
新建一个类,继承自第三方框架
3.动画图层
如果想让一个图层移除,用removeFromSuperView这个方法可能会出现坏内存访问的情况,应该用removeAllAnimations这个方法
4. [self.productInfoModelArr2 removeObject:productInfoModel]; 场景:删除数组中的模型
数组中存放着好多模型,但是他比较传进来的模型是否存在,实际上是判断传进来的模型的地址是否和数组中的模型地址一致,如果一致才删除。
如何让他不依据地址来判断呢,就要在模型中重写一下方法
/**重写方法,判断传进来的模型是否相等*/

- (BOOL)isEqual:(CLProDetailModel *)object

{

return [self.Id isEqualToString:object.Id]; // 即模型中Id相等,就说明这2个模型相等

}

5.点击立即付款调取提交订单的接口,接口调用成功后去调取支付宝或者其他支付方式,如果快速的点击立即付款按钮可能会出现点击的方法调用了2次,造成订单提交2次的情况。解决方法:在点击立即付款时要禁止界面的操作,就是要在界面上加一个遮罩层就解决了

6.运行时的使用场景:1)侧滑功能,代替使用运行时替换系统的方法

最好在layoutsubviews里面设置尺寸,虽然很多时候你会发现不再这个方法中设置尺寸也没有关系,但是有些时候必须要在这个方法中设置尺寸,比如:在你切换collectionView的布局时,使用setCollectionViewLayout切换布局,造成布局换乱,这个时候去看看,cell中空间的尺寸是不是在layoutsubviews这个方法中设置的
8 [_SwiftValue integerValue]: 检查枚举的地方是否少加了rawValue
9.升级xcode8后发现只要用到mj_header的地方就会报数组越界的奔溃,原因是模拟器是英文环境,把模拟器切换到中文环境就ok了
10.集成百度地图获取地区对应的cityCode
注意点:1.把百度的安装包都拖到项目中,把mapapi.bundle这个文件拖到项目中,
2.BMKOfflineMap一定要设置成全局变量,否则你会发现界面卡死了
3.定位完成要关掉定位服务
- (void)didUpdateBMKUserLocation:(BMKUserLocation *)userLocation

{

[SKUserDefaults setObject:[NSString stringWithFormat:@"%f",userLocation.location.coordinate.latitude] forKey:@"latitude"];

[SKUserDefaults setObject:[NSString stringWithFormat:@"%f",userLocation.location.coordinate.longitude] forKey:@"longitude"];

__block int flag = 0;

__block NSInteger cityId = 0;

__block NSString *city = @"";

BMKCoordinateRegion region;

region.center.latitude = userLocation.location.coordinate.latitude;

region.center.longitude = userLocation.location.coordinate.longitude;

region.span.latitudeDelta = 0;

region.span.longitudeDelta = 0;

NSLog(@"当前的坐标是:%f,%f",userLocation.location.coordinate.latitude,userLocation.location.coordinate.longitude);

CLGeocoder *geocoder = [[CLGeocoder alloc] init];

[geocoder reverseGeocodeLocation: userLocation.location completionHandler:^(NSArray *array, NSError *error) {

DLog(@"111");

if (array.count > 0) {

CLPlacemark *placemark = [array objectAtIndex:0];

if (placemark != nil) {

city = placemark.locality;

NSLog(@"当前城市名称------%@",city);

_offlineMap = [[BMKOfflineMap alloc] init]; // BMKOfflineMap一定要设置成全局变量

NSArray* records = [_offlineMap searchCity:city];

BMKOLSearchRecord* oneRecord = [records objectAtIndex:0];

//城市编码如:北京为131

cityId = oneRecord.cityID;

NSLog(@"当前城市编号-------->%zd",cityId);

}

}

}];

[_locService stopUserLocationService];// 不可去掉 一定要加上这个

}
11.集成环信,注意如果导入项目的环信的代码中含有一些第三方是项目中含有的,要把重复的删除

12."proName" : "CK&IDEA 中老年女装秋装外套中袖开衫中年妈妈装大码圆领妇女针织衫上衣", 请问有没有人遇到这样的情况,我像服务器提交上面的参数,安卓可以调试通,ios的确不行,原因就在于这个 “&”符号,这个&符号到底有什么影响?

如果你的表单使用get方法提交,并且提交的参数中有“&”等特殊符的话,如果不做处理,在service端就会将&后面的作为另外一个参数来看待。你必须对&进行转义 ,将这些特殊的字符转换成ASCII码,

URL特殊符号及对应的十六进制值编码:

1. + URL 中+号表示空格 %2B
2. 空格 URL中的空格可以用+号或者编码 %20
3. / 分隔目录和子目录 %2F
4. ? 分隔实际的 URL 和参数 %3F
5. % 指定特殊字符 %25
6. # 表示书签 %23
7. & URL 中指定的参数间的分隔符 %26
8. = URL 中指定参数的值 %3D
13.上传头像问题,安卓上传头像可以,ios上传头像总是失败,原因是ios图片转换的字节流中含有+号,这个特殊符号服务器识别不出来,把+号替换成%2B就可以了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: