OC_NSString,点语法,成员变量作用域,@property和@synthesize,id笔记

本文深入讲解了Objective-C的基础知识,包括字符串处理、点语法、成员变量作用域、属性与合成等核心概念,并介绍了id类型的基本用法。

1.NSString:OC字符串的输出。占位符是%@

OC语言中不要再用 char *name;来表示字符串

改为NSString *_name;


C语言中的sizeof时计算字符串的长度,而OClength是计算有多少个字所以比较适用与开发中的需求

创建OC字符串的另一种方式

    NSString *newStr = [NSString stringWithFormat:@"My age is %d and no is %d and name is %@",age,no,name];

NSLog(@"___%ld",[newStr length]);


2.点语法
代替setter和getter的调用语法

判断点是什么方法由有没有赋值决定有赋值就是set方法,调用则是get

点方法的本质还是方法调用

当使用点语法时,编译器会自动展开成相应的方法

 p.age =10;  // = [p setAge:10];


死循环:

- (int)age

{

   NSLog(@"age");

    return_age;// ->age;

    //会引发死循环

    // return self.age;// [self age];

}



3.成员变量的作用域

@public:在任何地方都能直接访问对象的成员变量

 @private:只能在当前类的对象方法中直接访问  

直接访问就是通过变量名来访问而不是通过getset方法

 @protected:可以在当前类及其子类的对象方法中直接访问(默认就是@protected

 @package:只要处在同一个框架中,就能直接访问对象的成员变量



4.@property@synthesize

@property:*可以自动生成某个成员变量的settergetter声明

*甚至可以同时做三件事情:1生成setter和getter的声明,2生成setter和getter的实现,生成相应的成员变量

*用在@interface中

*用@property int age;就可以代替一下两行

- (int)age;  //getter

-(void)setAge:(int)age;//setter


@synthsize:*可以自动生成某个成员变量的settergetter的实现

    *用在@implementation中
    *用@synthesize age = _age;就可以代替
- (int)age{
return _age;
}

      - (void)setAge:(int)age{

_age = age;

     }


@synthesize的细节

 >@synthesize age = _age

    settergetter实现中会访问成员变量_age

   如果成员变量_age不存在,就会自动生成一个@private的成员变量

 >@synthesize age;

    settergetter实现中会访问成员变量age

   如果成员变量age不存在,就会自动生成一个@private的成员变量age

 >手动实现

   若手动实现了setter方法,编译器就只会自动生成getter方法

   若手动实现了getter方法,编译器就只会自动生成setter方法

   若同时手动实现settergetter方法,编译器就不会自动生成不存在的成员变量



5.id

简介:1>万能指针,能指向任何OC对象,相当于NSObject *

      2>id类型的定义

 typedef struct objc object{

    Class isa;


 }*id;

 

 使用

 注意:id后面不要加*

 id p=[Person new];

 

 局限性

 调用一个不存在的方法,编译器会马上报错




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值