想到了就加进来,持续更新中。。。
1.查看Xcode编译时间
步骤:关闭Xcode,打开终端,输入
$ defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
效果如图:2.忽略编译警告
项目中常会引入第三方库来辅助开发,有些库为了兼容iOS之前的版本会使用一些在当前版本中废弃的API,如果我们的工程不支持,那么在编译的时候就会产生很多警告,此时代码是没问题的。
解决方法:Build Phases -> Compile Sources , 在想要忽略警告的文件后面输入 -w 即可忽略当前文件所有的编译警告。
我们也可以使用 -Wno-unused-variable 只禁掉未使用变量的编译警告。
3.target信息异常
当工程的编译target信息异常的时候,可以删除 .xcodeproj右键显示包内容中的xcuserdata目录。该目录下存有当前用户的各种工程状态信息,删除后重启Xcode,Xcode会自动重建该目录。
4.给模拟器相册增加图片
如果我们在模拟器上运行的程序需要使用到其他图片的话,直接拖拽该图片到打开的模拟器上,当出现加号的时候松手即可,这样图片就被放在了当前型号模拟器的相册当中。
5.收起键盘
在UIViewController中收起键盘,除了调用registerFirstResponder方法外,还有另外三种方法:
// 1.重载UIViewController 中 的 touchesBegin 方法
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
// 2.直接执行下面代码
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)
to:nil
from:nil
forEvent:nil];
// 3.直接执行
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
6.压缩图片
一个好用的压缩图片的网址:tinypng,使用说明都在上面,简单使用,可以给工程中使用的图片来个瘦身。
7. oc转c++
使用命令行进入 main.m
的目录,执行下面的命令会产生一个main.cpp文件
$ clang -rewrite-objc main.m
如果报错 ,如:
main.m:8:9: fatal error: 'UIKit/UIKit.h' file not found
#import <UIKit/UIKit.h>
^~~~~~~~~~~~~~~
可以使用如下命令行:
// 路径最后的iPhoneSimulatorX.X.sdk替换为Mac上装有的sdk, 如iPhoneSimulator12.0.sdk
// X.m 替换为需要转换的文件, 如 main.m
$ clang -x objective-c -rewrite-objc -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulatorX.X.sdk X.m
8. 查看Mac上装有的SDK
$ xcodebuild -showsdks
输出结果:
iOS SDKs:
iOS 12.0 -sdk iphoneos12.0
iOS Simulator SDKs:
Simulator - iOS 12.0 -sdk iphonesimulator12.0
macOS SDKs:
macOS 10.14 -sdk macosx10.14
tvOS SDKs:
tvOS 12.0 -sdk appletvos12.0
tvOS Simulator SDKs:
Simulator - tvOS 12.0 -sdk appletvsimulator12.0
watchOS SDKs:
watchOS 5.0 -sdk watchos5.0
watchOS Simulator SDKs:
Simulator - watchOS 5.0 -sdk watchsimulator5.0
9. 使用 grep
扫描内容
- cd到项目路径下
- 执行grep脚本
$ grep -r "搜索内容" .
10. Xcode描述文件路径
~/Library/MobileDevice/Provisioning Profiles