OC_NSString,点语法,成员变量作用域,@property和@synthesize,id笔记
2014-06-09 15:09
204 查看
1.NSString:OC字符串的输出。占位符是%@
在OC语言中不要再用 char *name;来表示字符串
改为NSString *_name;
C语言中的sizeof时计算字符串的长度,而OC中length是计算有多少个字所以比较适用与开发中的需求
创建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:只能在当前类的对象方法中直接访问
直接访问就是通过变量名来访问而不是通过get和set方法
@protected:可以在当前类及其子类的对象方法中直接访问(默认就是@protected)
@package:只要处在同一个框架中,就能直接访问对象的成员变量
4.@property和@synthesize
@property:*可以自动生成某个成员变量的setter和getter声明
*甚至可以同时做三件事情:1生成setter和getter的声明,2生成setter和getter的实现,生成相应的成员变量
*用在@interface中
*用@property int age;就可以代替一下两行
- (int)age; //getter
-(void)setAge:(int)age;//setter
@synthsize:*可以自动生成某个成员变量的setter和getter的实现
*用在@implementation中
*用@synthesize age = _age;就可以代替
- (int)age{
return _age;
}
- (void)setAge:(int)age{
_age = age;
}
@synthesize的细节
>@synthesize age = _age;
setter和getter实现中会访问成员变量_age
如果成员变量_age不存在,就会自动生成一个@private的成员变量
>@synthesize age;
setter和getter实现中会访问成员变量age
如果成员变量age不存在,就会自动生成一个@private的成员变量age
>手动实现
若手动实现了setter方法,编译器就只会自动生成getter方法
若手动实现了getter方法,编译器就只会自动生成setter方法
若同时手动实现setter和getter方法,编译器就不会自动生成不存在的成员变量
5.id
简介:1>万能指针,能指向任何OC对象,相当于NSObject *
2>id类型的定义
typedef struct objc object{
Class isa;
}*id;
使用
注意:id后面不要加*
id p=[Person new];
局限性
调用一个不存在的方法,编译器会马上报错
在OC语言中不要再用 char *name;来表示字符串
改为NSString *_name;
C语言中的sizeof时计算字符串的长度,而OC中length是计算有多少个字所以比较适用与开发中的需求
创建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:只能在当前类的对象方法中直接访问
直接访问就是通过变量名来访问而不是通过get和set方法
@protected:可以在当前类及其子类的对象方法中直接访问(默认就是@protected)
@package:只要处在同一个框架中,就能直接访问对象的成员变量
4.@property和@synthesize
@property:*可以自动生成某个成员变量的setter和getter声明
*甚至可以同时做三件事情:1生成setter和getter的声明,2生成setter和getter的实现,生成相应的成员变量
*用在@interface中
*用@property int age;就可以代替一下两行
- (int)age; //getter
-(void)setAge:(int)age;//setter
@synthsize:*可以自动生成某个成员变量的setter和getter的实现
*用在@implementation中
*用@synthesize age = _age;就可以代替
- (int)age{
return _age;
}
- (void)setAge:(int)age{
_age = age;
}
@synthesize的细节
>@synthesize age = _age;
setter和getter实现中会访问成员变量_age
如果成员变量_age不存在,就会自动生成一个@private的成员变量
>@synthesize age;
setter和getter实现中会访问成员变量age
如果成员变量age不存在,就会自动生成一个@private的成员变量age
>手动实现
若手动实现了setter方法,编译器就只会自动生成getter方法
若手动实现了getter方法,编译器就只会自动生成setter方法
若同时手动实现setter和getter方法,编译器就不会自动生成不存在的成员变量
5.id
简介:1>万能指针,能指向任何OC对象,相当于NSObject *
2>id类型的定义
typedef struct objc object{
Class isa;
}*id;
使用
注意:id后面不要加*
id p=[Person new];
局限性
调用一个不存在的方法,编译器会马上报错
相关文章推荐
- OC基础---NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- OC核心语法之NSString、点语法、成员变量作用域、@property和@synthesize
- 黑马程序员——OC语言------NSString、多文件开发、点语法、成员变量的作用域、@property和@synthesize
- 黑马程序员——OC语言学习——Xcode开发初始化、点语法、成员变量作用域、关键字@property和@synthesize
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- 黑马程序员——OC基础---核心语法(点语法,成员变量的作用域,@property和@synthesize)
- Objective-C—self 、super、点语法、成员变量的作用域、@property和@synthesize、id
- OC中的点语法,成员变量,@property和@synthesize:id类型,构造函数
- OC之点语法、成员变量作用域、@property和@synthesize
- 黑马程序员_iOS开发之OC之面向对象之多文件操作、点语法、成员变量的作用域和关键字@property与@synthesize
- OC特有语法1—点语法,成员变量作用域,@property,id,构造方法,多文件编程
- 黑马视频学习笔记-OC-点语法、成员变量的作用域
- OC——多态、NSString的基本使用、点语法、成员变量作用域
- 黑马程序员------OC基础-----点语法、id、构造方法、Category、成员变量作用域
- 【Objective-C学习笔记】核心语法——实例变量作用域、关键字@property和@synthesize
- 黑马程序员-OC学习笔记-点方法、成员变量作用域以及set方法和get方法@property的综合题
- OC基础—点语法、成员变量的作用域
- OC语言学习 (三) 成员变量get/set方法和“.”语法,@proterty和@synthesize关键字
- 黑马程序员——OC核心语法点语法,成员变量,@property和@synthetic,构造方法
- OC 点语法 和 成员变量作用域