报错数据为:
This application is modifying the autolayout engine from a background thread after the engine was ac
解决办法: 这种错误,大部分是由于开启了分线程,然后更新UI的时候,没有将更新操作放在主线程中,导致的错误。只要 将更新UI的动作,放在主线程中,即可解决此问题
dispatch_async(dispatch_get_main_queue(), ^{
// 更新UI
});
// 更新UI
});
可能会出现的布局偏移64个像素点
iOS7之后,navigationBar.translucent默认是YES,此时导航栏为半透明效果,坐标零点默认在(0,0)点 ,当不透明的时候,坐标零点在(0,64);
如果想设置成透明的,而且还要零点从(0,64)开始,添加:self.edgesForExtendedLayout = UIRectEdgeNone;
__weak和__block的区别:
1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型。 在MRC环境下,__block不会增加引用计数,不会导致循环引用,在ARC环境下 ,__block增加引用计数,有可能导致循环引用。
2.__weak只能在ARC模式下使用,也只能修饰对象(NSString),不能修饰基本数据类型(int)。不会增加引用计数
3.__block对象可以在block中被重新赋值,__weak不可以。
为什么block中不能修改普通变量的值:由于无法直接获得原变量,技术上无法实现修改,所以编译器直接禁止了。
block的循环引用并非__block修饰符引起,而是由其本身的特性引起的。
weak和assign都不会增加引用计数,区别是修饰的对象在释放时所做的操作不同,weak是会把对象置为nil,assign则不会,assign一般适用与基本数据类型
调用手机震动效果
添加头文件 #import <AudioToolbox/AudioToolbox.h>
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate)
获取控件在父视图中的位置
CGRect rect1 = [view2convertRect:view2.boundstoView:backgroundView];
获取控件在window中的位置
CGRect rect2 = [view2convertRect:view2.boundstoView:[UIApplicationsharedApplication].keyWindow];
模拟器路径
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport
直接删除文件后,出现 is missing from working copy missing file 出现警告
出现的原因: 由于svn缓存未清除,导致的警告
解决方法:1. 在终端输入 cd 到工程文件路径
2. 输入 find . -type d -name .svn | xargs rm -rf 或 输入 svn rm --force 丢失文件的名称 (前者:删除所有svn相关,后者:删除丢失的某个文件的svn相关)
mac 打开安装任何来源
终端输入 sudo spctl --master-disable
清除模拟器中运行的项目,运行项目时,可重新生成
~/Library/Developer/CoreSimulator/Devices/
移除对设备的支持,调试时会重新下载
~/Library/Developer/Xcode/iOS DeviceSupport
移除DerivedData, 项目运行时,可重新生成
~/Library/Developer/Xcode/DerivedData
模拟器卡死,一直处于黑屏状态
rm -rf ~/Library/Developer/CoreSimulator/Devices (删除模拟器目录下是所有文件)