美文网首页iOS开发之笔记摘录
iOS之工作中遇到的部分小问题

iOS之工作中遇到的部分小问题

作者: 平安喜乐698 | 来源:发表于2018-10-31 09:23 被阅读0次
    目录
        1. 真机测试
        2. 上传ipa错误
        3. AppStore被拒
        4. 其它
    
    1. 真机测试
    查看xcode支持的ios版本
        跳往文件夹:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
    
    1.
    错误:Could not find Developer Disk Image、which may not be supported by this version of Xcode.
    原因:手机系统版本高,xcode不支持
    解决:下载调试包放在路径下
    
    2.
    错误:Device "" isn't registered on the developer portal.
    原因:没注册设备
    解决:直接运行点击Register Device(或:在开发者中心注册设备) 
    
    3.
    错误: is busy: Processing symbol files 
    原因:第一次使用测试设备,需要配置设备信息
    解决:等待进度条结束
    
    4.
    错误:找不到模拟器或真机
    解决:升级XCode或将General中最低版本改低一点
    
    2.上传ipa错误
    0.
    错误:打包ipa时 xcode archive灰色 
    原因:不能使用模拟器去打包
    解决:选择 Generic iOS Device  打包。
    
    1.
    错误:上传ipa时提示The filename 未命名.ipa in the package contains an invalid character(s).  The valid characters are: A-Z, a-z, 0-9, dash, period, underscore, but the name cannot start with a dash, period, or underscore
    原因:打包名必须是英文,不能是中文
    
    2.
    错误:上传ipa时提示No suitable application records were found. Verify your bundle identifier 'com.neiquan.ClickC' is correct
    原因:账号(ApplicationLoader左上角)选择错误  或  itunesConnect中未创建相应bundleId的应用
    
    3.
    错误:上传ipa时提示ERROR ITMS-90087: "Unsupported Architectures. The executable for HappyRent.app/Frameworks/HelpDesk.framework contains unsupported architectures '[x86_64]'."
    原因: 苹果不允许SDK中含有x86结构
    解决:项目|Pharse 点+添加Run Script
    
    APP_PATH="${TARGET_BUILD_DIR}/${WRAPPER_NAME}"    
        
    # This script loops through the frameworks embedded in the application and    
    # removes unused architectures.    
    find "$APP_PATH" -name '*.framework' -type d | while read -r FRAMEWORK    
    do    
    FRAMEWORK_EXECUTABLE_NAME=$(defaults read "$FRAMEWORK/Info.plist" CFBundleExecutable)    
    FRAMEWORK_EXECUTABLE_PATH="$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME"    
    echo "Executable is $FRAMEWORK_EXECUTABLE_PATH"    
        
    EXTRACTED_ARCHS=()    
        
    for ARCH in $ARCHS    
    do    
    echo "Extracting $ARCH from $FRAMEWORK_EXECUTABLE_NAME"    
    lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"    
    EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")    
    done    
        
    echo "Merging extracted architectures: ${ARCHS}"    
    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"    
    rm "${EXTRACTED_ARCHS[@]}"    
        
    echo "Replacing original executable with thinned version"    
    rm "$FRAMEWORK_EXECUTABLE_PATH"    
    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"    
    done   
    
    4.
    错误:上传ipa时提示:ERROR ITMS-90478: "Invalid Version. The build with the version “3.8” can’t be imported because a later version has been closed for new build submissions. Choose a different version number."
    ERROR ITMS-90062: "This bundle is invalid. The value for key CFBundleShortVersionString [3.2] in the Info.plist file must contain a higher version than that of the previously approved version [3.1522]."
    原因:新版本的版本号低于旧版本(3.2是小于3.11的     因为32<311)
    
    5.
    错误:上传ipa时提示:The launch image set named "LaunchImage" did not have any applicable content.
    原因:launchImage大小不对
    
    6.
    错误:上传ipa时提示:While reading /Users/.../Other/Img/qq.png pngcrush caught libpng error:
    原因:图有问题,导出图片时不是png,而是手动改成的png,重新做png图片
    
    
    7.
    错误:上传ipa时提示:ERROR ITMS-90535: "Unexpected CFBundleExecutable Key. The bundle at 'Payload/HappyRent.app/HelpDeskUIResource.bundle' does not contain a bundle executable.
    原因:找到HelpDesk的info文件,删除Executable file行
    
    8.
    错误:Application Loader(提示密码就是不对)
    原因:二次验证,需要在https://appleid.apple.com/account/manage 中Generate Password输入任意数字生成临时密码,用此密码登录
    
    
    9.
    错误:icon 含有alpha通道
    解决:交给UI,去除alpha通道
    
    10.
    错误:ERROR ITMS-90502: "Invalid Bundle. Apps that only contain the arm64 slice must also have 'arm64' in the list of UIRequiredDeviceCapabilities in Info.plist."
    解决:不要选择真机进行打包,选择Generic iOS Device进行打包
    
    3.AppStore被拒
        可以跟审核人员说说好话,让他们尽快审核
    
    
    1.
    错误:During review, your app installed or launched executable code, which is not permitted on the App Store. Specifically, your app uses the itms-services URL scheme to install an app.
    原因:AppStore不允许继承蒲公英,不允许有更新版本按钮(AppStore会推送版本更新)
    
    2.
    错误:Your app contains references to test, trial, demo, beta, pre-release or other incomplete content.
    原因:含有测试数据
    
    3.
    错误:We were required to install the WeChat app before the we could log in via WeChat. Users should be able to log in with WeChat and access their accounts without having to install any additional apps.
    原因:登录应用不应该下载别的应用(没有安装微信,就不要显示微信按钮)
    
    4.
    错误:IPv6
    解决:添加域名解析。官方给的测试Ipv6方法是无效的:系统设置|option+共享|互联网共享勾选NAT64网络,手机连上该Wifi
    
    5.
    错误:需要登录账号但没有给出
    解决:填上测试账号(在提交审核页最下方)
    
    6.
    错误: 存在版本更新。不能有任何版本更新相关功能(AppStore会自动提示更新,不允许出现)
    解决:通过接口(审核/上线,审核通过后后台更新代码即可)2种状态下返回不同数据来显示UI
    
    
    7.
    错误:存在bug
    解决:修复吧
    
    8.
    错误:友盟登陆QQ提示未安装最新版本的QQ
    解决:没安装QQ直接隐藏,或者升级版本
    // 是否安装QQ
    BOOL qq= [[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"mqqapi://"]];
    // 是否安装微信
    BOOL wx=[[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:@"weixin://"]]; 
    
    4. 其它
    1.
    网络错误:App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app’s Info.plist file
    解决:
    在Info.plist中添加  
        <key>NSAppTransportSecurity</key>
        <dict>
            <key>NSAllowsArbitraryLoads</key>
            <true/>
        </dict>
    
    2.
    子线程操作UI错误:This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes.  This will cause an exception in a future release.
    解决:
    dispatch_async(dispatch_get_main_queue(), {             
        //更新ui                 
    })
    
    3.
    文件和面板连接错误:Unknown class RAMAnimatedTabBarItem in Interface Builder file.
    解决:
    删除旧连接,重新连接。
    
    4.
    webView错误:Error Domain=NSURLErrorDomain Code=-999
    解决:
    webview多次点击造成 还未加载上一次请求,又再次发送请求
         if([error code] == NSURLErrorCancelled){
            return;
        }
    
    5.
    
    Swift :Command failed due to signal: Segmentation fault: 11
    解决 :
    tableView的协议方法出问题了,返回String的要as?String
    
    6.
    
    错误: -[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance .
    原因:
    类型不匹配。从NSArray、NSDictionary中取出的一定要强转,自定义Model类的属性也要千万注意
    
    7.
    
    错误:code signing is required
    解决:
    勾选auto signing,设置Team
    
    
    8.
    错误:
    __nw_connection_get_connected_socket_block_invoke 1 Connection has no connected handler
    原因:
    没网
    
    9.
    错误:
    "_deflate", referenced from:
    解决:
    加入libz.tbd
    
    
    10.
    错误:
    [<NSObject 0x174014660> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the keythis class is not key value coding-compliant for the key placeButton.
    解决:
    设置了xib的Custom类,删除。然后在出错的控件的连接下删除outlets的file‘s
     nerow
    
    11.
    错误:
    no suitable image found
    解决:
    Product | Clear   ,重新运行
    
    
    12.fetching list teams from the developer
    Xcode重新添加开发者账号
    
    13.p12证书是灰色的
    在钥匙串界面左侧选择我的证书,然后导出p12。
    
    14.[UITableView/UIScrollView 不能响应TouchBegin]
    
    15.安装ipa
    itune菜单---添加到资料库
    
    16. mjrefresh 和 contentInset 一起设 会造成下拉刷新时布局有问题。
    
    17.Message from debugger: Terminated due to memory issue
    内存导致强制关闭 (原因之一:图片太大)
    
    
    
    18.图片压缩:最大不要超过200k。否则会造成卡顿
    
    19. 将图片放进模拟器相册
    直接拖拽到模拟器
    
    
    
    20.
    现象:XCode不自动提示了
    解决:跳到~/Library/Developer/Xcode/DerivedData文件夹下,删除文件夹下的所有内容。
    

    UITableView

    ->(修改别人代码发现的问题)数据源在网络请求获得新数据时再清空原数组,不要过早清空数组否则造成崩溃
    ->不止reloadData会重新调用delegate方法刷新,当设置了delegate/dataSource后会调用一次,setNeedsLayout、layoutIfNeeded、屏幕旋转也会调用delegate方法
    ->组头视图有默认高度,不需要时设置为 CGFLOAT_MIN
    ->分割线默认距左侧有间隙,设置左右间隙
        [searchTV setSeparatorInset:UIEdgeInsetsMake(0, 20, 0, 10)];  // 距左20 距右10
    一般不使用分割线,然后自定义分割线
       [searchTV setSeparatorStyle:UITableViewCellSeparatorStyleNone];  // 不要分割线
    -> Plan格式的,当向上滑动时,组头视图会停留在最上方直到下一个组头视图(即悬停)
    不需要这个效果:使用Group格式  或者  定义tableViewHead=组头视图高 再设置contentInset
    -> tableViewHeader直接修改高度无效:需要重新修改后重新赋值给tableViewHeader
    -> CELL自适应高度 :Model添加height属性(固定高度+变化高度),返回行高方法中返回
    

    UIScrollView+Autolayout引起的问题

    -> 设置距右边距有问题: 设置宽度不要设置右边距(或者建一个contentView 然后把子View建在contentView上)
    
    解决失效
    方法一:
      ->最后一个子视图需要设置距SV的距离
    方法二:
      ->给SV加一个总视图,然后在总视图上做操作
    

    UIButton

    按钮不可点击,可能情况:
      1.超出父视图
      2.userInteractionEnabled设置成false(不可交互)
      3.enabled设置成false(不可用)
      4.父视图不可点击(如UIImageView)
    
    
    
        // 可以单独设置title/image,可以一起设置(img在左 title在右)
        // 调整title和img的位置(2种方式)
    方式一:
        // 上左下右(上左:正数时下右偏移;下右:正数时上左偏移)
        [button setTitleEdgeInsets:UIEdgeInsetsMake(0, -button.imageView.bounds.size.width, 0, button.imageView.bounds.size.width)];
        [button setImageEdgeInsets:UIEdgeInsetsMake(0, button.titleLabel.bounds.size.width, 0,  -button.titleLabel.bounds.size.width)];
        // 方式二:(继承UIButton,覆写)
     -(CGRect)titleRectForContentRect:(CGRect)contentRect{}
     -(CGRect)imageRectForContentRect:(CGRect)contentRect{}
    

    相关文章

      网友评论

        本文标题:iOS之工作中遇到的部分小问题

        本文链接:https://www.haomeiwen.com/subject/snyotqtx.html