OC-面对对象的核心语法


有点愧疚,这段日子荒废了,也浪费了很多时间。

接下来是我看的关于核心语法的一些笔记,可能不全也可能有错误,希望大家可以指出来。

一、点语法

点语法的本质是调用。
例如:
Person *p = [Person new];
赋值
p.age = 10; // 等价于[P setAge:10];调用setter
取值
int a = p.age;// 等价于[P age];调用getter

二、成员变量的作用域

@public  任何地方都能直接访问
@private 只能在当前类的对象方法中直接访问
@protect 当前类和子类的对象方法。虽然被保护,但是在内存中子类拥有父类中的方法

三、@property和@synthesiz

1.自动生成 _age.
2.自动生成_age的setter和getter声明
@property int age;//写上类型和名称
/*等价于
-(void)setAge:(int)age;
-(int)age;*/
//表示字符串
@property NSString*name; 生成setter 和getter方法的实现
@synthesize age = _age;
还可以连着写
@synthesize age =_age,name = _name;
注:
一般情况下省略@synthesize,只写@property
并且会自动生成setter和getter的声明和实现。

四、万能指针 id

id 是一种指针,一般形式为
id = NSObject*
id d = [Person new]

五、构造方法

属于对象方法,减号开头。
new  完整的创建一个可用的对象
① 分配存储空间 ② 初始化
不再使用new创建对象。改为以下方式
1.调用+alloc 分配存储空间
2.调用-init进行初始化
Person *p = [[Person alloc] init];

六、重写构造方法

目的:为了让对象创建出来,成员变量就会有一些固定的值
*****重写-init 方法*****

id是为了使任何对象都可以调用NSObject
  -(id)init    
  { 一定要调用回superinit 方法
   初始化父类中声明的成员变量和其他属性
  if (self = [super init]
  {  如果对象初始化成功,才能进行下面的初始化
    _age = 10;//所有成员变量初始化值都是10
  }
    return self//返回一个已经初始化完毕的对象
  }

七、自定义构造方法

自定义构造方法:
1.一定是对象方法,一定以减号开头
2.返回值一定是id类型
3.方法名以initWith开头
例如
@interface Person:NSObject
@property NSString *name;
@property int *age;
-(id) initWithName:(NSString*)name andAge:(int)age;

@implementation Person
-(id)initWithName:(NSString*)name andAge:(int)age;
{
  if(self=[super init])
  {  _name=name;
    _age=age;
  }
  return self;
  }
  int main()
  {
    Person *p = [[Person alloc] initWithName:@"rose"andAge:30]
    return 0;
}

八、类的本质

利用Person这个类创建Person类型的对象
Person *p = [[Person alloc] init];
获取内存中的类对象,即Person这个类对象
Class c = [p class];
也可以写成Class c = [Person class];
注:
类本身也是一个对象,是个class类型的对象,简称类对象,
利用class创建Person类对象
利用person创建Person类型的对象



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值