如期而至,OC第二天

OC中的构造方法(在对象初始化的时候,这时候可以直接调用构造函数)

1.一般以init开头,(动态方法)

2.返回值最好是返回ID

步骤:1.调用super的构造方法:

     2.判断self是否为空如果不为空,那么就进行赋值操作

      3.返回self

-(id)initWithAge:(int)ageandNo:(int)no{

self=[superinit];

if(self){

_age=age;

_no=no;

}

return self;

}

如果不打印成员变量而是打印一个对象,也就是用%@
来打印一个对象的是否,这时候会

自动调用父类的description(nsstring)方法:这时候就需要我们重写父类的description
方法,以输出

我们想要看到的结果。这时候要用到stringwithformat:然后返回字符串。

- (NSString *)description

{

NSString *str=[NSString
stringWithFormat:@"age: %i  no: %i",_age,_no];

return str;

}

Main :

Person *person = [[Personalloc]initWithAge:1
andNo:3];

NSLog(@"%i  %i ",person.age,person.no);

NSLog(@"%@",person);

私有方法:如果一个方法直接写在了.m文件中,没有在.h中声明,那么该方法为私有的方法。

Property 
synthesize  

当一个类中的成员变量很多的是否,如果你要自己手写setter和getter方法,那么会很麻烦,并且很多代码都是重复的,为了解决这个问题,引入了property和sythesize。

@property:是在.h文件中定义的,例如:@property 
int age :
编译器会自动生成setter和getter方法,生成的格式为
set +成员变量民:
即setage;

同理,如果你在.m文件中用关键字sythesize,那么会自动实现用property声明的成员变量的方法》

Synthesize
会默认访问跟age同名的成员变量

如果找不到,会自动生成一个变量age

@synthesizeage=_age;  //age = _age
代表getter 
getter会去访问_age这个成员变量。

在xcode4.5以后,如果你在@property
int
age
里面声明一个成员变量,而在.m文件里面没有声明@synthesize,那么编译器也会自动
默认的给你生成setter
和getter方法的实现。

前提:如果在.h里面没有声明age这个成员变量,

问题:如果没有在.m文件中进行@synthesize
那么编译器生成的是什么成员变量呢:

通过验证得出,是_age ,setter 
getter
方法里面访问到的都是变量_age;而不是age.

如果在.h文件里面声明的有age
这个成员变量,那么在.m文件中直接@synthesize
age ,
那么这时候编译器就会自动生成一个私有的_age成员变量

如果2:如果你在setter方法里面有自己的特殊操作例如,你想age=age*12,返回一个月,这时候你就要自己手动写一个setter方法,如果你只写一个setter方法的话那么关键字@synthesize
不会再生成setter方法,而只生成一个getter方法,同理,如果你只实现一个getter方法,那么编译器会自动给你生成一个setter方法:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-08 05:38:15

如期而至,OC第二天的相关文章

OC第二节的总结

实例变量的可见度:@public:公共的,在任何文件中都可以访问,(访问方式是对象+指向操作符+实例变量,例如:per->name)@protected:受保护的,有一定的访问权限,只允许在本类文件以及子类文件中访问,其他文件不可以访问@private:私有的,只允许在本类文件中访问,不可以在子类文件 以及其他文件中访问默认的可见度是@protected为什么不声明为@public?   1.声明为@public的实例变量,外部就可以访问以及修改,会影响内部的一个实现,暴露实现细节   2.违背

OC第二节 —— NSString和NSMutableString

1.为什么需要NSString对象        答:在OC中创建字符串时,一般不使用C的方法,    因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,    在Cocoa中NSString集成的一些方法,可以很方便的操作字符串, 2.oc中字符串和c语言字符串的对比            "hello world"        @"hello world"                     1)输出方式    %@       2)引用方式 

OC第二课

主要内容:实例变量可见度.方法 一.实例变量可见度 public(共有的):实例变量可以在类的内部和外部使用 protected(受保护的.默认的):实例变量只能在该类及其子类中使用 private(私有的):实例对象只能在该类中使用 所谓的内部是指:@interface .... @end之间 示例: @interface @public                                 / /共有的,谁都能访问 NSString  *_adress ;            /

OC第二天

1.如果方法不使用成员变量,此时可以考虑写成+方法. 2.加方法与减方法的区别:加方法可以用类名调用,不需要再创建对象,节省内存,但是加方法不能访问成员变量. 3.setter与getter,setter的规则:把成员变量名前面的“-”去掉,首字母大写,前面加上set,如:-(void)setName:(char*)name;  getter直接把成员变量名前面的“-”去掉,如:-(char*)name; 4.alloc出来的对象,开始时的成员变量都是nil. 5.如果在类中声明的方法,在.m中

iOS 2 setter和getter

今天主要学习的setter和getter的使用方法, 按照昨天所学习的内容,首先我们要创建一个工程,另外在创建一个Person类! ================================================================= 在Person.h中 创建Person类中的几个实例变量, 声明setter和getter方法    "上代码"敢问代码是谁! #import <Foundation/Foundation.h> /* 实例变量可见

iOS学习笔记---oc语言第二天

实例变量与方法 一.实例变量的可见度 二.方法 oc中的方法分两种:类方法和实例方法 类方法:只能类使用 eg:+ (id)alloc  注:类方法中不能使用实例变量 实例方法:只能对象使用,eg:- (void)sayHi iOS学习笔记---oc语言第二天

OC总结第二讲:实例变量可见度和方法

实例变量有3种常用的可见度:@public  @protected  @private public(公有的) 实例变量可以在类的外部和内部操作 protected(受保护的,默认的) 实例变量只能在该类和其子类内操作 private(私有的) 实例对象只能在该类内访问 所谓的内部,指的是相应类的@implementation和@end之间 方法: 1.类方法:只能类使用 例如: +(id)alloc 注意:类方法中不能使用实例变量 2.实例方法: 只能对象使用, - (void)satHi 程

OC中的部分基础-----第二天

老实说,今天没有花多少时间看视频学习, 可是我尽量抽时间了. 不解释了.解释都是掩饰. 早上睡得不踏实.因为忘记设置闹钟 了怕睡过头了,总是半醒的状态,而且懒得设置闹钟....这个习惯要改... 下午快一点半的时候开始看视频的,没有睡午觉好没精神,但是等我把那四个程序看完并且还跟着敲完,发现才过了两个小时左右,开心,赤裸裸的进步.不过还是得谦虚---谦虚---- 然后又从头找重点看了一遍,记了点笔记. 今天看到了类与对象明天继续 对了,今天看视频的速度比昨天快多了,就觉得更有信心看下去了!!!!

iOS开发——完整项目实战OC篇&amp;百思不得姐第二天

百思不得姐第二天 上午 一调用父类先后顺序问题 二:手势滑动 解决问题 1 // 什么时候调用:每次触发手势之前都会询问下代理,是否触发. 2 // 作用:拦截手势触发 3 - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer 4 { 5 // 注意:只有非根控制器才有滑动返回功能,根控制器没有. 6 // 判断导航控制器是否只有一个子控制器,如果只有一个子控制器,肯定是根控制器 7 if (s