zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    java常见异常
    实现两个整数变量交换
    java抽象类与接口
    Java内部类用法
    单例模式
    easyUI下拉列表点击事件的使用
    Java中使用HttpRequest获取用户真实IP地址端口
    js-easyUI格式化时间
    1124
    ACM算法
  • 原文地址:https://www.cnblogs.com/yxl-151217/p/10813479.html
Copyright © 2011-2022 走看看