zoukankan      html  css  js  c++  java
  • [Objective-c 基础

    A.id

    万能指针,可以指向任何对象,实质是NSObject的指针,使用的时候不用加上*
     
    B.NSObject中得类方法new
    1.完整地创建一个可用对象步骤
    (1)分配存储空间 + alloc
    (2)初始化 - init
    1         // 1.调用+alloc分配存储空间
    2         Person *p1 = [Person alloc];
    3         // 2.调用-init进行初始化
    4         Person *p2 = [p1 init];
    5         // 同时进行分配存储空间和初始化
    6         Person *p3 = [[Person alloc] init];
     
    (3)构造方法就是init方法
     1 @implementation Person
     2 
     3 // 重写-init方法
     4 - (id) init
     5 {
     6     // 1.一定要调用super的init方法
     7     self = [super init];// 当前对象self
     8    
     9     // 2.如果对象初始化成功,才能进行接下来的子类初始化
    10     if (self != nil)
    11     {// 初始化成功
    12         self.age = 10;
    13     }
    14    
    15     // 3.返回一个已经初始化的对象
    16     return self;
    17 }
    18 
    19 @end
    简化:
    1 - (id) init
    2 {
    3     if (self = [super init])//nil实际是0
    4     {
    5         self.age = 10;
    6     }
    7     return self;
    8 }
     
    C.自定义构造方法
     1 @interface Person : NSObject
     2 @property NSString *name;
     3 
     4 /*
     5  自定义构造方法的规范
     6  1.一定是对象方法,一定以-开头
     7  2.返回值一般是id类型
     8  3.方法名一般以init开头
     9 */
    10 
    11 - (id) initWithName:(NSString *) name;
    12 
    13 @end
    14  
    15 @implementation Person
    16 
    17 - (id) initWithName:(NSString *) name
    18 {
    19     if (self = [super init])
    20     {
    21         _name = name;
    22     }
    23    
    24     return self;
    25 }
    26 
    27 @end
    原则:父类的成员变量交给父类的方法去处理
    谁声明,谁处理
     
     
  • 相关阅读:
    java线程池及创建多少线程合适
    消息队列消息积压了怎么办?
    Redis线程模型
    redis单线程如何支持高并发
    基于redis实现分布式锁
    PHP面试总结
    【转】Redis入门
    面试常考之二叉树
    计算机网络之面试常考
    操作系统之面试常考
  • 原文地址:https://www.cnblogs.com/hellovoidworld/p/4119359.html
Copyright © 2011-2022 走看看