关于Xcode的错误分析和处理
BMKGeoCodeSearch 反向地理编码一直失败 Location
申请的key的安全码与代码中build id不一样。改动成一样就OK了
新建一个类,将百度地图的定位功能封装起来以后,定位的代理方法不走
定位是要一直持续的,而我们新建这个类。假设不设置成,staic静态变量,他就会自己主动销毁,对象销毁以后肯定不会定位了。
ios8系统 点击设置隐私定位功能直接崩溃的问题
这个问题出现的原因肯定不是ios8系统的问题。由于其它app都好的。为什么你的APP就有问题,肯定是你加代码的时候什么地方写错了。
我对照代码找了好几遍,最终发现有个地方和别人的不一样,那就是设置plist文件变量的时候Type类型BOOl应该是String。预计苹果是通过字符串对照来推断的,所以BOOl类型就直接崩溃了。
使用cateogry假设调用不了类目里的方法
须要在被扩展的类的.m文件里,导入你所扩展的类,在类目中不能声明变量
弹出不同步 同一时间下来上拉刷新两次,有时数据源数组会是空造成奔溃
数据源数组採用懒载入,另外记得给数组赋nil,最好这样做。
输入框与键盘的弹出不同步
这表明监听键盘错误,应该监听的是键盘将要显示的通知,而不是键盘显示出以后的通知
问题 -[UITableView _configureCellForDisplay:forIndexPath:]
解答 由于- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 这个函数的返回值中有nil
问题 Xcode 工程文件打不开,cannot be opened because the project file cannot be parsed. (代码更新时。可能有这样的情况)
解答 这是由于.xcodeprojproject文件冲突了
冲突消息信息
<<<<<<< .mine 9ADAAC6A15DCEF6A0019ACA8 .... in Resources */, ======= 52FD7F3D15DCEAEF009E9322 ... in Resources */, >>>>>>> .r269
解决方法: 1.对.xcodeproj 文件右键,显示包内容
2.双击打开 project.pbxproj 文件
3.找到以上类似的冲突信息(能够用commad + f 搜索)
4.删除 <<<<<<<,======,>>>>>>这些行
5.保存,退出
6.又一次打开.xcodeproj文件就可以
问题 使用arc编写的文件,怎样不用删release
解答 在build phases 的complies sources设置中将对应的文件设置为-fno-objc-arc
问题:libxml/tree.h file not found解决的方法
解答:1. 导入libxml2.dylib 包
2.设置Header Search Paths 为 /usr/include/libxml2 如图:
问题:__dns_free_resource_r_dns_free环信SDK集成EaseMobSDK
"_dns_free_resource_record", referenced from: -[XMPPSRVResolver processRecord:length:] in libEaseMobClientSDKLite.a(XMPPSRVResolver.o)
这种错误,是因为缺少库:
加入libresolv.dylib库,就能够了
使用上拉下拉刷新方法时。假设跳出该界面接记得释放上拉下拉刷新类(老版本号的MJRefresh)
不能在viewdidload中跳转控制器
问题:AFNetworking请求中含中文时程序崩溃
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];[manager GET:urlString parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {//} failure:^(AFHTTPRequestOperation *operation, NSError *error) {//}];
出现error:
Assertion failure in -[AFHTTPRequestSerializer requestWithMethod:URLString:parameters:error:]
须要处理urlString的编码
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
彻底解决_OBJC_CLASS_$_某文件名称", referenced from:问题
http://www.cnblogs.com/g-ios/p/4625907.html
Receiver type 'TableViewCellFrame' for instance message is a forward declaration
这往往是引用的问题。ARC要求完整的前向引用,也就是说在MRC时代可能仅仅须要在.h中申明@class就能够。可是在ARC中假设调用某个子类中未覆盖的父类中的方法的话,必须对父类.h引用,否则无法编译。
程序公布后。发现一个bug,须要在自己手机调试时,出现:a valid provisioning profile for this executable was not found错误.
原来是由于公布的时候把schema里的"Build Configuration"改成了release。
而release相应的provision是用公布证书的。把"Build Configuration"改成了debug就好了。
because the App Transport Security policy requires the use of a secure connection
今天升级Xcode 7.0 bata发现网络訪问失败。
输出错误信息
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
Google后查证,iOS9引入了新特性App Transport Security (ATS)。
详情:App Transport Security (ATS)
新特性要求App内訪问的网络必须使用HTTPS协议。
可是如今公司的项目使用的是HTTP协议,使用私有加密方式保证数据安全。如今也不能立即改成HTTPS协议传输。
终于找到下面解决的方法:
在Info.plist中加入NSAppTransportSecurity类型Dictionary。
在NSAppTransportSecurity下加入NSAllowsArbitraryLoads类型Boolean,值设为YES
參考:
App Transport Security support aka apps on iOS 9 don't work #4560
711_networking_with_nsurlsession.pdf
总结:
苹果正在加大应用安全的管控。这个举措能够看出苹果对信息安全的重视,也暴露出大部分应用数据传输时都是未经过加密的。或使用私有方式加密,以至于苹果開始对开发人员提出要求。
私有加密尽管一定程度上是安全的,可是终究不是一个长久之计。全世界这么多安全专家在维护HTTPS安全,早日使用HTTPS确保信息安全才是王道!也省去了私有加密协议的安全隐患!
当更新xcode后。再次打开svn他将提示xcode/develop不存在,而且让你用xcode-select切换成你当前使用的xcode。
例如以下: sudo xcode-select -switch /Applications/Xcode-beta.app/
这里的路径是最easy出错的。我当时就被他弄迷了 搞了好长时间 记录这个是硬盘下的application并非用户里的application。还有就是文件名称。尽量让他自己提示出来,避免出错
error: Couldn't materialize: couldn't get the value of variable result: variable not available
Errored out in Execute, couldn't PrepareToExecuteJITExpression 这样的报错更直观的表现是,一句代码一运行,所创建的对象将会立刻变成空,但不影响使用
coredata Can't merge models with two different entities named ‘MessageModel'
这样的错误是由于project内部自己主动生成了一个.xcdatamodeld文件,解决的方法就是 将该文件删除,clean,然后将软件从測试机或真机中删除,再执行
uitableView 不走datasource方法
代理没挂 行数或者段数设置为0 uitableview的frame为0
问题原因:
之前在keychain(钥匙窜訪问)中多删了一个证书:Apple Woldwide Developer Relations Certification Authority。它是iPhone Developer证书的签发者,假设它被删除就会导致iPhone Developer证书被识别为未知颁发机构签名。然后xcode中真机调试就会出现上面的错误。
解决的方法:
又一次把AppleWWDRCA放回去;从Apple官网(http://www.apple.com/certificateauthority/)下载一个。下载后拖入keychain(钥匙窜訪问)-登录文件夹。
假设想又一次生成证书,Apple是同意的,仅仅要不改动App Id就Ok。
Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “E9823ESPAM” were found.
证书出现这样的问题时第一反应不要觉得是证书除了问题。要查看target里的CDL与CDLtest里面是否设置了一样的配置文件。
A valid provisioning profile for this executable was not found. 真机调试
自从XCode支持自己主动维护证书之后,省去了我们手动加入设备再更新完证书之后下载的麻烦。但一直都没有搞明确自己主动维护的机制。导致常常出现XCode报错却不自己主动加入设备,同一时候因为证书是XCode创建的,又无法手动改动的问题。
经过一段时间的測试。最终找到了解决的方法,在这里分享给大家。
正常的情况应该是:
no provisioning profile was found for this executable
然后能够选择Fix Issue,这样XCode就会自己主动为我们将新的设备加入到证书里,再自己主动更新证书。可能遇到的错误例如以下:
A valid provisioning profile for this executable was not found
解决方法是
1. 在Target的General界面中将Team改为所相应的开发人员账号团队
2. 在Target的Build Settings中的Code Signing Identity都改为iOS Developer(这里不能选择自己的),Provisioning Profile改为Automatic
3. 此时Clean之后再执行,就能够出现Fix Issue的对话框,选择Fix Issue就可以。