您的位置:首页 > 移动开发 > IOS开发

iOS战记 ----OC基础语法之战(二)

2015-06-05 20:23 423 查看

iOS战记 ----OC基础语法之战(二)

一个机械设计者的转行之战。

一位记者在某一个iOS开发公司采访一个健步如飞的老大爷。

记者问:大爷,你身体这么棒,保持年轻的秘诀是什么?

大爷回答说:一周工作七天每天加班只睡两个小时。

记者:大爷您今年高寿啊?

大爷:你大爷!!!我今年24~~~~~~~~~~~~~



下面讲解OC中的具体的类,还有对象的创建和实现方法:

<1>先创建一个Person类

</pre><p></p><p></p><pre name="code" class="objc">#import <Foundation/Foundation.h>

@interface Person : NSObject

{

//    @public
//    @protected
//    @private
//    public(公有的):实例变量可以在类的外部和内部操作
//    protected(受保护的,默认的):实例变量只能在该类和其子类内操作
//    private(私有的):实例对象只能在该类内访问
    
//    所谓的内部,指的是相应类的@implementation 和@end之间

//实例变量的声明方法
NSString *_name;
NSInteger _age;
NSString *_gender;
}
<pre name="code" class="objc">//属性的声明方法
//@property NSString *_gender;

//初始化方法
-(id)initWithName:(NSString *)na;

//当前类具有的行为。
-(void)sayHi;

//设置器(赋值方法)
-(void)setName:(NSString *)na;

//访问器(取值方法)
-(NSString *)getName;

//    便利构造器
+(instancetype)personWithName:(NSString *)na;




注意1):这里要注意我后面写的方法传入的参数写成na而不是写成name,是因为我开始学的时候容易把这个传入的参数和声明实例变量的名字容易混淆。后来慢慢习惯了声明实例变量的时候变量名字前加"_"。

注意2):我声明的属性写法是简写,是为了和上面的实例变量对比,其实实际的写法为:@property (nonatomic, copy) NSString *gender;

为了一些基础差和零基础的人的好理解,可以先按我代码写的初步理解。

<2>在Person类的.m中实现方法

#import "Person.h"

@implementation Person

//属性的实现
//@synthesize _gender = ge;

-(id)initWithName:(NSString *)na
{
self = [super init];
if (self) {
_name = na;
}
return self;
}

-(void)setName:(NSString *)na
{
_name = na;
}

-(NSString *)getName
{
return _name;
}
//便利构造器
+(instancetype)personWithName:(NSString *)na
{
Person *person = [[Person alloc]initWithName:na];
return person;
}

@end


注意1):self是给本对象发送消息,super是给本对象的父类对象发送消息。

注意2):上面的 便利构造器中的 personWithName:(方法名)⭐️⭐️⭐️⭐️必须有,后面会有一个匿名函数:block,它是可以没有函数名的。

总结:

OC中的方法分两种:类⽅方法和实例方法。

类方法:只能类使⽤,例如:+(id)alloc

⭐️⭐️⭐️⭐️注:类方法中不能使⽤ 实例变量⭐️⭐️⭐️⭐️

实例方法:只能对象使用,例如: -(void)sayHi

⭐️⭐️⭐️⭐️id是泛型,只对对象类型⭐️⭐️⭐️⭐️

id 创建类型不加*号,其他都加星号*。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: