OC语言@property @synthesize和id

OC语言@property @synthesize和id

一、@property @synthesize关键字

注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明和实现。

(一)@property 关键字

@property 关键字可以自动生成某个成员变量的setter和getter方法的声明

@property int age;

编译时遇到这一行,则自动扩展成下面两句:

- (void)setAge:(int)age;

- (int)age;

(二)@synthesize关键字

@synthesize关键字帮助生成成员变量的setter和getter方法的实现。

语法:@synthesize age=_age;

相当于下面的代码:

- (void)setAge:(int)age

{

_age=age;

}

- (int)age

{

Return _age;

}

(三)关键字的使用和使用注意

类的声明部分:


类的实现部分:


测试程序:


新版本中:

类的声明部分:


类的实现部分:


测试程序:


(1)在老式的代码中,@property只能写在@interface @end中,@synthesize只能写在@implementation @end中,自从xcode 4.4后,@property就独揽了@property和@synthesize的功能。

(2)@property int age;这句话完成了3个功能:1)生成_age成员变量的get和set方法的声明;2)生成_age成员变量set和get方法的实现;3)生成一个_age的成员变量。

注意:这种方式生成的成员变量是private的。

(3)可以通过在{}中加上int _age;显示的声明_age为protected的。

(4)原则:get和set方法同变量一样,如果你自己定义了,那么就使用你已经定义的,如果没有定义,那么就自动生成一个。

(5)手动实现:

1)如果手动实现了set方法,那么编译器就只生成get方法和成员变量;

2)如果手动实现了get方法,那么编译器就只生成set方法和成员变量;

3)如果set和get方法都是手动实现的,那么编译器将不会生成成员变量。


二、Id

id 是一种类型,万能指针,能够指向\操作任何的对象。

注意:在id的定义中,已经包好了*号。Id指针只能指向os的对象。

id 类型的定义

Typedef struct objc object{

Class isa;

} *id;

局限性:调用一个不存在的方法,编译器会马上报错。

时间: 2024-09-17 10:55:09

OC语言@property @synthesize和id的相关文章

iOS - OC 语言新特性

前言 相对于 Java,OC 语言是一门古老的语言了,而它又是一门不断发展完善的语言.一些新的编译特性,为 OC 语言带来了许多新的活力.在 Xcode7 中,iOS9 的 SDK 已经全面兼容了 Objective-C 的一些新特 性和新功能.这些功能都只作用于编译期,对程序的运行并没有影响,因此,它可以很好的向下进行兼容,无缝的衔接低版本的 iOS 系统,如果可以将这些新特性都应用于开发,开发效率和代码质量,相比之前会有一个很大的提升. 1.可选类型检测 在 swift 语言中,通过 ! 和

OC语言构造方法

OC语言构造方法 一.构造方法 (一)构造方法的调用 完整的创建一个可用的对象:Person *p=[Person new]; New方法的内部会分别调用两个方法来完成2件事情,1)使用alloc方法来分配存储空间(返回分配的对象):2)使用init方法来对对象进行初始化. 可以把new方法拆开如下: 1.调用类方法+alloc分配存储空间,返回未经初始化的对象 Person *p1=[person alloc]; 2.调用对象方法-init进行初始化,返回对象本身 Person *p2=[p1

OC语言BLOCK和协议

一.BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码.用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行. BOLCK和函数的相似性:(1)可以保存代码(2)有返回值(3)有形参(4)调用方式一样. 标识符 ^ (二)基本使用 (1)定义BLOCK变量 Int (^SumBlock)(int,int);//有参数,返回值类型为int Void (^MyBlock)()://无参数,返回值类型为空 (2)利用block封装代码 (3)Block访问外部变

OC语言前期准备

OC语言前期准备 一.OC简介 Oc语言在c语言的基础上,增加了一层最小的面向对象语法,完全兼容C语言,在OC代码中,可以混用c,甚至是c++代码. 可以使用OC开发mac osx平台和ios平台的应用程序. 拓展名:c语言-.c OC语言.-m 兼容C++.-mm 注:其实c语言和oc甚至任何一门语言都只是我们为了实现一些功能,达到一些效果而采用的工具,抛开语法的差别外,我想最重要的应该是在解决问题的时候考虑的角度和方法不一样而已,然而这也构成了学习一门语言的重要性. 二.语法预览 (一)关键

OC语言基础知识

一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO面向对象.OOP面向对象编程 二.类 (一)关于类 类的设计只关注三个东西:类名.属性和方法 注意:一般名词都是类,拥有相同属性和行为的对象都可以抽象为一个类,类名是标识符的一种,需要符合规范,通常类名的第一个字母大写,且不能有下划线,如果有多个单词则使用驼峰标识.在对方法进行类的划分中,一般采取的

OC语言类的本质和分类

OC语言类的深入和分类 一.分类 (一)分类的基本知识 概念:Category 分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一个方法 Study方法的实现 测试程序: (二)分类的使用注意 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告)

OC之@property和@synthesize

在OC中经常使用get和set方法,但是当成员变量太多的时候,就要敲很多行get和set方法.在xcode4.4之前,为了简洁代码,可以使用@property声明get和set方法: @property int age; 就相当于: - (void)setAge:(int)age; -(int)age; 后面代码可以就当作正常写了get和set方法一样去调用- (void)setAge:intage;和-(int)age;. 假设_age为成员变量,当然也可以使用@synthesize去代替写出

OC语言大总结(上)

根据OC学习的知识点,总结了一下,希望能帮到大家! 作者:韩俊强  未经允许,请勿转载! 关注博主:http://weibo.com/hanjunqiang 第一节类于对象   类与对象http://blog.sina.com.cn/s/blog_814ecfa90102vtum.html 知识点 注意事项 面向对象编程 OOP(Object Oriented Programming) 面向对象语言 C++,Java,C#,OC,Swift 概念 类,对象,封装,继承,多态... 面向过程编程

OC语言实现中等难度通讯录

实现中等难度通讯录.需求: 1.定义联系⼈人类Contact.实例变量:姓名(拼⾳音,⾸首字⺟母⼤大写).性别.电话号码. 住址.分组名称.年龄.⽅方法:⾃自定义初始化⽅方法(姓名.电话号码).显⽰示联系⼈人信息 2.在main.m中定义字典,分组管理所有联系⼈人.分组名为26个⼤大写的英⽂文字⺟母. 3.可以添加联系⼈人对象,如果姓名或电话号码为空,添加失败.添加联系⼈人到匹配的分 组. 4.获取某个分组名称下所有联系⼈人,并且按照姓名升序排列. 5.从通讯录中根据电话号码搜索联系⼈人. 6.