OC - 开发笔记之小知识点的大作用

来源:互联网 发布:java布尔型变量 编辑:程序博客网 时间:2024/05/29 13:00


报错数据为: 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

       });


可能会出现的布局偏移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修饰符引起,而是由其本身的特性引起的。


调用手机震动效果


添加头文件 #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


weak和assign都不会增加引用计数,区别是修饰的对象在释放时所做的操作不同,weak是会把对象置为nil,assign则不会,assign一般适用与基本数据类型

0 0
原创粉丝点击