1. id
  1. 简介
  • 万能指针,能指向任何OC对象,相当于NSObject *
  • id类型的定义
typedef struct objc_object {

    Class isa;

} *id;
  1. 使用
// 注意:id后面不要加上*

id p = [Person new];
  1. 局限性

调用一个不存在的方法,编译器会马上报错

  1. 构造方法:---用来初始化对象的方法,是一个对象方法
  1. 对象创建原理
  • new的拆分两部曲
  • 分配内存(+alloc)
  • 初始化(-init)
Person *p1 = [Person alloc];

Person *p1 = [p1 init];

合成一句后:

Person *p = [[Person alloc] init];
  1. init方法的重写
  • 目的:为了让对象创建完毕后,成员变量马上就有一些默认的值
  • init方法的重写过程
  • 先初始化父类,后初始化子类
    • 先调用父类的构造方法([super init])
  1. - (id)init
    {
    if (self = [super init]) {
    _age = 10;
    }
    return self;
    }

自定义构造方法

  • 构造方法的一些规范
  • 返回值是id类型
  • 方法名都以init开头
  • - (id)initWithAge:(int)age {
    
        if (self = [super init]) {
    
            _age = age;
    }
    return self;
    }

    传递多个参数进行初始化

- (id) initWithAge:(int)age andNo:(int)no;

.h和.m文件的抽取

  • 每个类分布在不同文件中
  • 类的声明放在.h文件,类的实现放在.m文件
  • 若想使用某个类,就包含某个类的.h声明文件

OC-id、构造方法的更多相关文章

  1. OC的特有语法-分类Category、 类的本质、description方法、SEL、NSLog输出增强、点语法、变量作用域、@property @synthesize关键字、Id、OC语言构造方法

    一. 分类-Category 1. 基本用途:Category  分类是OC特有的语言,依赖于类. ➢ 如何在不改变原来类模型的前提下,给类扩充一些方法?有2种方式 ● 继承 ● 分类(Categor ...

  2. OC语言构造方法

    OC语言构造方法 一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法 ...

  3. 李洪强iOS开发之OC语言构造方法

    OC语言构造方法 一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法 ...

  4. OC的构造方法与分类知识点总结

    OC语言构造方法: 用来初始化对象的方法,对象方法,以减号开头 为了让对象创建出来,成员变量就会有一些固定的值 重写构造方法的注意点: 先调用父类的构造方法([super init]) 再进行子类内部 ...

  5. OC基础--构造方法 id类型

    new方法实现原理: new做了三件事情 1.开辟存储空间  + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 [Person new]; == [[Pe ...

  6. OC基础--构造方法

    OC语言中类的构造方法学了两种: 一.方法一:[类名 new] 例:[Person new] 缺点:可扩展性不强,假如在Person类中有_age 成员变量,在初始化时想让_age 中的值为20,ne ...

  7. 「OC」构造方法和分类

    一.构造方法 (一)构造方法的调用 创建一个可用的对象:Person *p=[Person new]; new方法实际上是分为两步来创建一个对象: 1)使用+alloc方法来分配存储空间(返回分配的对 ...

  8. OC id类型

    id数据类型可存储任何类型的对象.从某种意义说,它是一般对象类型. -------------------------"NormalMan.h"------------------ ...

  9. objective-c 语法快速过(4)

    oc 里的字符串 字符串的快速创建(最简单的方法) NSStirng *str = @“Hello”;//oc的字符串都是@“”形式的 oc的字符串也是类的对象,是NSString类的对象,创建没有那 ...

  10. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    文顶顶iOS开发博客链接整理及部分项目源代码下载   网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程 ...

随机推荐

  1. java-a实现压缩与解压缩(zip、gzip)

    zip扮演着归档和压缩两个角色:gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩. Java I/O类库还 ...

  2. jquery获取多重input的方式

    获取input的checked值是否为true: 第一种: if($("input[name=item][value='val']").attr('checked')==true) ...

  3. 如何让ie 7 支持box-shadow

    box-shadow是一个很好用并且也常用的css 3属性,但是,如果我们要保证它能在ie 8及更低的版本下运行的话,需要借助一些其他的插件或文件.在这里我主要讲一下,如何用PIE.htc来解决ie ...

  4. js日历表

    $scope.getCurrentWeek = function (day) { var days = ["星期日", "星期一", "星期二&quo ...

  5. JAVA基本类型的转换

    1.String转成Int 例1: String str = "123"; try { int a = Integer.parseInt(str); } catch (Number ...

  6. 【BZOJ-1391】order 最小割 + 最大全闭合图

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1334  Solved: 405[Submit][Statu ...

  7. jquery插件-表单验证插件-rules

    ruels方法 1说明:查看.新增.移除一个表单控件的验证规则 2使用: 表单控件.rules(); 参数: rules() 返回元素的验证规则 rules('add',rules) 增加验证规则 r ...

  8. BZOJ4720 [Noip2016]换教室

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  9. Linux inode && Fast Directory Travel Method(undone)

    目录 . Linux inode简介 . Fast Directory Travel Method 1. Linux inode简介 0x1: 磁盘分割原理 字节 -> 扇区(sector)(每 ...

  10. CentOS找回root密码

    如果忘记了root密码,可以进入单用户模式进行密码重置. 重启系统,在grub的启动菜单中按下e键,然后编辑kernel那一行,在最后的quiet后加上single. 按下Enter后,再按b开机进入 ...