OC中属性及方法

1.声明式属性
    a.实例变量
    b.声明属性
        自动生成setter/getter方法
        .h ->@property 属性类型 属性名;
        .m ->@synthesize 属性名 = 实例变量名;
    c.点语法
2.IOS5中的属性
    a.实例变量  省
        会自动生成实例变量,实例变量名 等于 _属性名
    b.声明属性
        @property 属性类型 属性名;
        @synthesize 属性名 = 实例变量名;
    c.点语法
3.IOS6中的属性
    a.实例变量 省
    b.声明属性
        @property 属性类型 属性名;
        @synthesize 属性名 = 实例变量名; 省
    c.点语法
总结:
    a.实例变量 省
    b.声明属性
        @property 属性类型 属性名;
        @synthesize 属性名 = 实例变量名; 省
    c.点语法

4.初始化方法
    创建对象的时候,也需要进行初始化操作。
    如果进行默认值的初始化,调用无参的初始化方法。
    如果进行指定值的初始化,调用有参的初始化方法。
    语法规则 :
    无参的初始化方法,与生俱来就拥有,可以不用自定义。
    -(id)init{
        self = [super init];
        if(self){

}
        return self;
    }    
    有参的初始化方法,只能自定义。
    -(id)initWithAge:(int)age andSex:(char)sex{
        self = [super init];
        if(self){
            对属性值的初始化;
        }
        return self;
    }
5.id类型
    任意类型指针,与C语言中的void*使用相似。
    仅仅指向内存中的对象,并不关注内存中数据类型。
    id类型也不能直接使用,如果使用必须做类型转换操作。
        类型转换是有风险的,引用类型必须与空间类型相匹配。
    id类型只能指向(引用)对象所在的内存区域。
6.super关键字
    super关键字代表一个类的父类。
    可以在子类中调用父类中的方法,此时使用super关键字。
    [super init];真正的初始化操作由父类解决。
7.OC中的方法
    方法分为两种:
    a.实例方法
        实例方法只能通过实例(对象)来调用。
        语法规则 :
        -(返回值类型)方法名; -符号 代表实例方法
        实例方法解决与实例有关的相关操作。(数据信息)
        实例方法经常用来处理内存中的数据。
    b.类方法
        类方法只能通过类来调用。
        语法规则 :
        +(返回值类型)方法名; +符号 代表类方法。
        类方法解决与类信息相关的相关操作。(类代码信息)
        类方法经常用来处理与代码相关的操作。(开辟内存空间大小)
        作用:分配内存空间时,经常使用类型方法。
8.self关键字
    self关键字,不但可以在实例方法中使用,也可以在类方法中使用。
    在实例方法中使用self关键字,代表当前实例。
        在当前实例中,如果需要调用其它的实例方法。
        [self otherMethod];
    在类方法中使用self关键字,代表当前类。
        在当前类,如果需要调用其它的类方法。
        [self otherMethod];
        [类 otherMethod];
        在类方法中,是不可以调用实例变量,当然也不可以调用实例方法,当然也不可以调用属性。
        类方法主要用来创建对象。
9.工厂方法
    用来创建对象的。
    创建对象更简单。
    工厂方法分为:
        无参的工厂方法:只会创建一个默认值的对象。
        有参的工厂方法:会创建一个指定值的对象。
    工厂方法命名:
        类方法
        方法名:去掉类的前缀,首字母小写。
        (+)string;
        (+)stringWith… and…;
    工厂方法需要自己写。

NSString -> NS前缀(公司名缩写,二、三个字母组成,并大写) String 类名
    TRString -> TR(tarena) String类名
    HW… -> HW(helloWorld)

时间: 2024-10-12 21:28:38

OC中属性及方法的相关文章

OC中的内省方法初探

内省(Introspection)是对象揭示自己作为一个运行时对象的详细信息的一种能力.NSObject协议和类定义了很多内省方法,用于查询运行时信息,以便根据对象的特征进行识别. 在iOS开发过程中,有效的使用内省方法.有助于避免错误地进行消息派发.错误地假设对象相等.以及类似的问题.明智地使用内省可以使面向对象的程序更加高效和强壮. OC中的内省方法有: 1,isKindOfClass:检查本实例对象,是否是某个类的对象,包括继承的子类. 2,isMemberOfClass:检查本实例对象,

为什么Nhibernate中属性和方法必须Virtual的

如果你曾经用过NHibernate 2.0或者更高的版本,那您一定碰到过下面的错误:NHibernate.InvalidProxyTypeException: The following types may not be used as proxies: NHibernateExamples.Entities.OrderLine: method get_UnitPrice should be 'public/protected virtual' or 'protected internal vi

个人总结诀窍----oc中对象作为方法连续,重点也是难点.

相信有不少初学者,oc中的对象作为方法连续传递在一两个对象的时候可能还好,多了可能就绕晕了...我接下来就分享一下我个人对这一块的知识的总结或心得或诀窍吧. 我觉得用"螳螂捕蝉黄雀在后"比较形象,关键点就一环套一环,怎么去打比方还是看个人理解了... 举个例子:一个顾客要去一家餐馆吃饭,餐馆有厨师,厨师有食材.以上有对象分别为:顾客,餐馆,厨师,食材; 一.先来理解这2段关于顾客的代码. #import <Foundation/Foundation.h> #import &

OC中属性self.a与_a访问的区别

在OC中我们可以通过指令@property定义属性. OC对属性封装了许多方法,同时也会自动实现一些方法,相比实例变量,感觉更加面向对象些. 一般定义属性的方法如下,在Class Test中定义属性int a. @interface Test:NSObject @property int a; -(void) changeAValue:(int) newValue; @end 在类的实例方法中,我们可以用下面两种方式来访问a属性: 1.直接用属性名访问: -(void) changeAValue

OC中属性的内存管理

在MRC模式下,我们建一个Person类的对象.h文件如下 1 #import <Foundation/Foundation.h> 2 3 @interface Person : NSObject 4 @property (nonatomic, retain)NSString *name; 5 @property (nonatomic, retain)NSString *sex; 6 @property (nonatomic, assign)NSInteger age; 7 //自定义初始化

面向对象中对象和类以及如何访问类中属性和方法

对象:客观存在的具体事物.某一个具体的个体 *类:具有相同行为和共同特征的对象的集合,类是人类脑海中一个抽象的概念,通过类创建对象 *类中的成员:1.成员属性(描述外部特征) 2.成员方法(描述功能行为)* 如何定义一个类: * [修饰符] class 类名{ * //1.属性的定义:与定义变量类似 * [修饰符] 数据类型 属性名; * //2.方法的定义 * [修饰符] 返回值类型 方法名(形参列表){ * //方法体; * } * } * 成员变量和局部变量的区别: * 1.作用域不同:成

Python3基础 一个类中 属性与方法重名时,属性会覆盖方法 基本示例

镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.------------------------------------------ code: class MyClass : #属性 num=1 #方法 def num(self): print('hello') test=MyClass() #这里还可以呢 test.num() #下面对属性进行赋值 test.num=1a #你会发现 方法报错了 test.num()

python中属性和方法的动态绑定

# 定义一个类 class Student(object):     pass # 实例化一个对象     s = Student() # 给这个对象绑定一个属性name s.name = 'John' print(s.name) John # 定义一个方法 def set_age(self, age):     self.age = age # 导入模块     from types import MethodType #给s这个对象绑定一个set_age的方法 s.set_age = Met

OC中属性readwrite,readonly,assign,retain,copy,nonatomic 各是什么作用,在那种情况下用?

此次只做简单说明,不做代码演示! 1> readwrite:同时生成get方法和set方法的声明和实现 2> readonly:只生成get方法的声明和实现 3> assign:set方法的实现是直接赋值,用于基本数据类型 4> retain:set方法的实现是release旧值,retain新值,用于OC对象类型 5> copy:set方法的实现是release旧值,copy新值,用于NSString.block等类型 6> nonatomic:非原子性,set方法的