美文网首页
iOS 每天问题解惑(二)

iOS 每天问题解惑(二)

作者: 浮桥小麦 | 来源:发表于2017-01-21 10:18 被阅读32次
    目录:
    1.为什么开发中不建议用int 和 double 
    2.OC中枚举的定义
    3.strong,weak,assign,copy关键字
    4.OC中类方法和实例方法的区别
    5.成员变量和属性的区别
    6.[cell addSubview:]和 [cell.contentView addSubview:]方法的区别
    7.服务器返回json数据和OC比对
    8.开发者账号分类
    9.Core Foundation 和 Foundation 桥接注意事项
    10. KVC简要底层原理
    11.到底什么是多态
    12.UIScrollView—ContentSize/contentOffest/contentInsert
    13.LLDB调试按钮
    14.
    15.
    16.
    
    Pragma Mark — NO.1 为什么开发中不建议用int 和 double
    #开发中不建议用int 和 double 类型的数据,主要是考虑到版本适配的问题
    1.在5s之前是32位操作系统,之后是64位
    2.所以苹果推荐用NSInteger 和 NSUInteger
    
    NSInteger.png

    用NSInteger 和 NSUInteger 不用考虑适配问题

    Pragma Mark — NO.2 OC中枚举的定义
    枚举的标准写法.png
    Pragma Mark — NO.3 strong,weak,assign,copy关键字
    • 题目:
    题目.png strong,weak.png

    而assign不会自动置为nil

    Pragma Mark — NO.4 OC中类方法和实例方法的区别
    1.属于谁
    类方法属于类对象 [NSString stringWithFormart]
    实例方法属于实例对象 [str length]
    
    2.谁调用
    类方法 类对象调用
    实例方法 实例对象调用
    
    3.self 是什么
    在类方法里  self表示的是类对象
    在实例方法里 self表示是实例对象
    
    4.是否可以访问成员变量
    类方法里 不可以访问成员变量
    实例方法里 可以访问成员变量
    
    5.方法调用
    在类方法里 可以调用实例方法也可以调用类方法
    在实例方法里 可以调用实例方法也可以调用类方法
    
    
    Pragma Mark — NO.5 成员变量和属性的区别
    #首先知道一个类是由固有属性和方法去描述其特点和行为方式的
    (例如:车描述是什么样的车,这辆车的用途是什么等等)
    #1.背景:
    在OC最初创建时,是没有属性的概念的,是在2.0以后接入的,属性是为成员变量服务的
    
    #2.为什么会出现属性:
    因为苹果一直致力于简化程序员的编码工作,所以当类中成员变量过多的时候,
    我们就会发现给成员变量写getter和setter方法是比较麻烦的,所以有了属性的出现
    
    #3.属性做了什么:
    属性自动添加了setter和getter方法,并且自动生成了一个成员变量(前提是没有对应的成员变量)
    
    #4. @synthesize的作用
    给属性自动生成的_xxx 重新命名 
    例如: 
    @interface ViewController ()
    @property (nonatomic , copy) NSString *name;
    @end
    @implementation ViewController
    //给相应地成员变量改名
    @synthesize name = myName;
    - (void)viewDidLoad {
        [super viewDidLoad];
     myName = @"属性创建时自动生成了一个成员变量";
        NSLog(@"%@",myName);
    }
    
    #5. 在@protocol 和 category 中如何使用 @property
     可以使用
    
    
    
    
    Pragma Mark — NO.6 [cell addSubview:]和 [cell.contentView addSubview:]方法的区别

    cell 添加子控件方法的区别

    Pragma Mark — NO.7 服务器返回json数据和OC比对
    JSON                           OC
    大括号{}                   NSDictionary
    中括号[]                   NSArray
    双引号””                  NSString
    数字                         NSNumber
    
    Pragma Mark — NO.8 开发者账号分类
    #个人的 99$
      申请简单,付钱就好, 688¥
    #企业的 99$
      申请复杂,需要”邓白氏”认证,可以确认企业是合法有效的
      可以管理团队开发
    #商业的 299$
     也需要邓白氏认证,开发的应用不能上架,(不通过苹果审核)专给企业级用户定制应用
    
    
    Pragma Mark — NO.9 Core Foundation 和 Foundation 桥接注意事项
    1.有几种桥接方式—三种
    1.1  CF 转化为 Foundation — 这种方法只是让Foundation框架暂时使用 CF 框架对象,所以需要释放内存, 注意2里面
    CFStringRef firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty);
       NSString *firstNameStr = (__bridge NSString *)(firstName);
    
    1.2 CF 转化为 Foundation — CF 框架移交对象的管理权给Foundation框架,不用管内存问题
     NSString *Label = (__bridge_transfer NSString *)ABMultiValueCopyLabelAtIndex(phoneNumbers, i);
    # CFBridgingRelease 等价于 (__bridge_transfer type)
    
    1.3 Foundation 转化为 CF —  了解,不怎么用
     (__bridge_retained CF type)expression)
    
    2.注意内存释放
    CFRelease(phoneNumbers);
    
    Pragma Mark — NO.10 KVC简要底层原理
    # setValue:forKey方法--底层机制
    1.程序优先会考虑调用:setName:属性(set方法)代码通过setter方法完成设置
    2.如果该类没有setter方法,KVC会搜索该类名为_name的成员变量,无论该成员变量是在类接口部分还是实现部分定义,也无论是采用哪个访问控制符修饰,这条KVC代码底层实际是对这个_name的成员变量赋值
    3.如果以上两个都没有,那么KVC会搜索该类名为name的成员变量,底层实际就是对这个name成员变量赋值
    4.如果以上都没找到,会调用setValue:forUndefinedKey:方法
    
    #valueforKey方法
    1.同上,只是调用的是getter方法的返回值
    2.同上
    3.同上
    4.同上
    
    
    Pragma Mark — NO.11 到底什么是多态
    Objective-C 指针类型的变量有两个:一个是编译时的类型,一个是运行时的类型
    编译时的类型由声明该变量时使用的类型决定的
    运行时的类型由实际赋给该变量的对象决定
    如果编译时类型和运行时类型不一致,就可能出现所谓的多态
    
    
    Pragma Mark — NO.12 UIScrollView—ContentSize/contentOffest/contentInsert
    Snip20170217_18.png
    Pragma Mark — NO.13 LLDB调试按钮
    Snip20170220_1.png
    Pragma Mark — NO.14
    Pragma Mark — NO.15
    Pragma Mark — NO.16
    Pragma Mark — NO.17
    Pragma Mark — NO.18
    Pragma Mark — NO.19
    Pragma Mark — NO.20

    相关文章

      网友评论

          本文标题:iOS 每天问题解惑(二)

          本文链接:https://www.haomeiwen.com/subject/lehgmttx.html