码迷,mamicode.com
首页 > 移动开发 > 详细

IOS开发学习笔记011-核心语法

时间:2015-04-17 15:27:20      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

 

 

1、点语法

2、成员变量的作用域

3、 @property和@synthesize

 

 

 

点语法

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

1     Person *p = [Person new];
2     p.age = 10;//点语法
3     p.name = @"li si";//点语法
4     //[p setName:@"zhang san"];
5     //[p setAge:20];
6     NSLog(@"name is %@,age is %d",[p name],[p age]);

输出是 2015-04-17 11:02:02.456 oc_test1[1348:83501] name is li si,age is 10

使用注意,如果 再方法中使用self语句如下,则会进入死循环。

 1 #pragma mark 年龄的set方法
 2 - (void)setAge:(int)age
 3 {
 4     _age = age;
 5     // 死循环
 6    // self.age = age;
 7 }
 8 - (int)age
 9 {
10     // 死循环
11     // return self.age;
12     return  _age;
13 }

 

成员变量的作用域

  默认是protected

  @public 在任何地方都可以访问对象的成员变量

  @private 只能在当前类的对象方法中直接访问(@implementation中默认是private)

  @protected 只能在当前类和子类的对象方法中直接访问

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

   OC都是单继承。

 @property和@synthesize

 @property:自动生成某个成员变量的setter和getter声明

@property int age;//自动生成setter和getter的声明

@synthesize 自动生成setter和getter的实现,并且访问对应的成员变量

@synthesize age;// 如果这样写默认会自动访问成员变量age,而不是_age;;如果没有age则自动生成@private类型的成员变量age

 

1 // @synthesize 自动生成setter和getter的实现
2 @synthesize age = _age,name = _name; // 可以连着写

 

简单写法

@property int age;

  这句话在新版Xcode会自动生成成员变量getter和setter的声明和实现,并且会自动生成一个@private类型的成员变量_age;

1 #import <Foundation/Foundation.h>
2 
3 @interface Person : NSObject
4 // @property 自动生成setter和getter声明
5 @property int age; // 这句话在新版Xcode会自动生成成员变量getter和setter的声明和实现,并且会自动生成一个@private类型的成员变量
6 @end

 

1 #import "Person.h"
2 
3 @implementation Person
4 @end

 

使用方法如下:

 1 #import <Foundation/Foundation.h>
 2 #import "Person.h"
 3 
 4 int main(int argc, const char * argv[])
 5 {
 6     Person *p = [Person new]; //新建对象
 7     p.age = 10; // set方法
 8 
 9     NSLog(@"age is %d",p.age); // get方法
10 
11     return 0;
12 }

其他注意事项

1、@synthesize age; 

  如果这样写默认会自动访问成员变量age,而不是_age;;如果没有age自动生成@private类型的成员变量age.

1 @implementation Person
2 @synthesize age; // 如果这样写默认会自动访问成员变量age,而不是_age;如果没有age自动生成@private类型的成员变量age
3 @end

 

 

2、如果自己写得有setter或者getter方法,那么就不会自动生成,只会生成不存在的setter和getter方法。

 

IOS开发学习笔记011-核心语法

标签:

原文地址:http://www.cnblogs.com/songliquan/p/4434812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!