• iOS常见面试题


    1.用@property声明实例的时候,关键字copy和strong有什么区别 

    在iOS开发中,一般copy关键字用在NSString、NSArray、NSDictionary、block等属性字段的修饰符。

    为什么上述属性需要使用copy修饰呢?原因是上述属性都有可变的子类,如 NSString->NSMutableString、NSArray->NSMutableArray、NSDictionary->NSMutableDictionary;根据面相对象的多态特性,NSString类型的变量可以指向NSMutableString类型的变量。声明对象的属性一般都是希望明确知道对象的值,但是如果对子类是可变类型的属性使用strong修饰的话,可能会在对象不知情的情况下修改对象属性的值,这肯定是对象不愿意看到的。

    可以变数组、字典用copy修饰的时候,对其操作的时候(增删改)会崩溃。因为用了copy之后,改变量会变成不可变,解决方法是改成实例变量的懒加载模式。

    2.block

    内部修改外部变量   

    __block int blockLocal = 100;

     static int staticLocal = 100;

    避免循环引用

    __typeof (self) weakSelf = self;

  • 相关阅读:
    jQuery过滤器 过滤器
    查询总结
    ado.net
    禅修程序员十诫
    Asp.net中Bind()和Eval()的区别
    什么是好代码?
    12 个有效的提高编程技能的方法
    Visual Studio各种版本之间的转换工具
    程序员的培养
    session和cookie的区别和联系!
  • 原文地址:https://www.cnblogs.com/yxl-151217/p/10813479.html
Copyright © 2020-2023  润新知