iOS 特性小记

  • obj4 源码
    https://opensource.apple.com/tarballs/objc4/

  • CFRunLoopRef 源码
    https://opensource.apple.com/tarballs/CF/

  • GCD 源码
    https://github.com/apple/swift-corelibs-libdispatch

  • GNUstep 源码
    http://www.gnustep.org/resources/downloads.php

  • MachOView 源码
    https://github.com/gdbinit/MachOView

  • 使用 clangOC 转化成 C++ 代码

    • xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc OC源文件 -o 输出的CPP文件
    xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main.cpp
    

    如果需要链接其他框架,使用 -framework参数。比如-framework UIKit

  • 在使用clang转换OC为C++代码时,可能会遇到以下问题
    cannot create __weak reference in file using manual reference

    解决方案:支持ARC、指定运行时系统版本,如:

    xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc -fobjc-arc -fobjc-runtime=ios-8.0.0 main.m
    
  • Shell 脚本执行

    • 先赋予脚本文件执行权限,再直接运行
      chmod 755 ./run-sonar.sh
      ./run-sonar.sh
    • 通过 Bash 调用脚本文件
      bash ./run-sonar.sh
  • Fix warning

    • The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.3. (in target 'xxx')
      Fixed:在 Podfile 最下方添加如下代码,再执行 pod update/install
post_install do |installer|
 installer.pods_project.targets.each do |target|
   target.build_configurations.each do |config|
     if config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'].to_f < 9.0
       config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
     end
   end
 end
end

版本号与你的 platform :ios, '9.0' 一致

  • Oh My Zsh

    • 升级: omz update upgrade_oh_my_zsh
    • 卸载: uninstall_oh_my_zsh
  • ATS 问题
    iOS 9 默认非 HTTPS 网络静止访问,需要在 info.plist 文件添加 NSAllowsArbitraryLoads 字段并设置成 YES。但是 iOS 102017年1月1日 起 Apple 不允许通过这个方法跳过 ATS,必须强制使用 HTTPS,若不这样做,上传 App Store 可能被拒。但是还可以通过设置
    NSExceptionDomains 字段来针对特定的域名开放 HTTP 通过审核。

  • Pushpem 文件生成
    终端执行以下命令,生成 ck.pem 文件
    openssl pkcs12 -in ck.p12 -out ck.pem -nodes

  • 测试 pem 证书文件是否有效
    a. 测试开发证书
    openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns_dev.pem
    b. 测试生产证书
    openssl s_client -connect gateway.push.apple.com:2195 -cert apns_inhouse.pem

  • Fix iOS 12.1 二级页面 pop 的时候 tabbar 跳动的 Bug
    [[UITabBar appearance] setTranslucent:NO];

  • echo 'export PATH="/usr/local/opt/libxml2/bin:$PATH"' >> ~/.zshrc

你可能感兴趣的:(iOS 特性小记)