59.strong weak,block,aotoresizing代码实现

1.strongweak
1.1>
在OC中没有强指针指向的对象就会销毁,所有对象被创建的时候默认是强指针。
比如:
int main(int argc, const char * argv[])
{

    @autoreleasepool {

        // strong 强指针
        // weak 弱指针
        // ARC, 只要对象没有强指针就会自动释放
        // OC中默认都是强指针
        Person *p = [[Person alloc] init];
        Car *c = [[Car alloc] init];
    }//该行后,没有p(栈)和c(栈)指向的对象Person(堆)和Car(堆)就会销毁
    NSLog(@"---------");
    return 0;
}

1.2>
strongweak修饰属性,__strong(默认就是strong,所以一般不用)和__weak修饰变量

1.3>
控件一般都加在view上,所以一般使用weak即可。比如,[self.view addSubViews:label],这句代码会在self.view.subViews这个数组会加入label,所以在声明label属性的时候一般weak即可,必须注意的是,要先创建一个局部变量,然后加入self.view.subViews数组,然后属性再引用!

1.4>
UITableViewController--->tableview--->delegate---->UITableViewController
如果都是强指针的话会造成循环引用,所以在tableview的delegate为assign属性,这是在MRC中的写法。
一般我们使用代理的时候delegate为weak属性,这是ARC的写法,用weak来取代assign
2.Autoresizing的代码实现
    /*
     UIViewAutoresizingNone                 = 0,  什么都没有设置
     UIViewAutoresizingFlexibleLeftMargin   = 1 << 0, // 代表距离左边的距离是不确定的, 也就是说距离右边的距离是固定
     UIViewAutoresizingFlexibleWidth        = 1 << 1,
     UIViewAutoresizingFlexibleRightMargin  = 1 << 2, // 代表距离右边的距离是不确定的, 也就是说距离左边的距离是固定
     UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
     UIViewAutoresizingFlexibleHeight       = 1 << 4,
     UIViewAutoresizingFlexibleBottomMargin = 1 << 5
     */
    self.view.autoresizingMask =  UIViewAutoresizingFlexibleRightMargin;
3.block注意点
如果block是copy属性,那么在它内部使用self会造成循环引用。
为了避免循环引用有三个关键字可以用__unsafe_unretained,__block,__weak,其中__weak是在ARC中使用的,
__weak和__unsafe_unretained的区别是:__weak 当对象释放之后会自动设置为nil,
 而__unsafe_unretained不会。

__weak typeof(self) unsafeSelf = self;
typeof(类型),例如:typeof(int) a = 10;相当于int a = 10self.age = 10;访问self的属性也会对self进行强引用
_age = 10;也会造成强引用,注意改行代码会自动变成 self->_age = 10;
unsafeSelf.age = 10; // 注意改行代码会自动变成 self->_age = 10;
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值