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

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方法。

时间: 2024-11-11 00:44:02

IOS开发学习笔记011-核心语法的相关文章

IOS开发学习笔记011

xcode使用技巧 1.自动生成类 2.断点调试 3.代码段保存 4.注释标记 1.新建类,自动生成两个文件和基本结构 第一步  第二步,选择新建一个类,而不是一个源文件  第三步,书写类名一级自己要继承的父类  第四步.选择文件的保存路径  最后,自动生成两个文件,一个头文件,一个源文件,文件的基本结构已经写好了. 2.断点调试 断点调试可以观察程序运行过程中各种变量的变化过程,用于检查错误. 取消断点或者删除断点 3.代码段保存  这里要设置代码段的名称和要使用的快捷方式,用于在文件中输入快

IOS开发学习笔记(二)-语音识别(科大讯飞)

上次简单地讲解了如何利用科大讯飞完成语音合成,今天接着也把语音识别整理一下.当然,写代码前我们需要做的一些工作(如申请appid.导库),在上一篇语音合成的文章当中已经说过了,不了解的可以看看我上次的博文,那么这次直接从堆代码开始吧. 详细步骤: 1.导完类库之后,在工程里添加好用的头文件.在视图里只用了一个UITextField显示识别的内容,两个UIButton(一个开始监听语音,一个结束监听),然后引入类.添加代理,和语音合成的一样. MainViewController.h 1 #imp

IOS开发学习笔记-(2)键盘控制,键盘类型设置,alert 对话框

一.关闭键盘,放弃第一响应者,处理思路有两种 ① 使用文本框的 Did End on Exit 绑定事件 ② UIControl on Touch 事件 都去操作 sender 的  resignFirstResponder #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UITextField *txtUserName; @pro

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

IOS开发学习笔记-(3) 进度条、等待动画开始停止

一.创建对应空间视图  ,如下图: 二.编写对应的 .h 代码,如下 : #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIActivityIndicatorView *activWaitNetWork; @property (weak, nonatomic) IBOutlet UIProgressView *pgrsDownLo

IOS开发学习笔记(1)-----UILabel 详解

1. [代码][C/C++]代码     //创建uilabelUILabel *label1 = [[UILabel alloc] initWithFrame:CGRectMake(20, 40, 280, 80)];//设置背景色label1.backgroundColor = [UIColor grayColor];//设置taglabel1.tag = 91;//设置标签文本label1.text = @"Hello world!";//设置标签文本字体和字体大小label1.

IOS开发学习笔记(2)-----UIButton 详解

1. [代码][C/C++]代码     //这里创建一个圆角矩形的按钮    UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    //    能够定义的button类型有以下6种,//    typedef enum {//        UIButtonTypeCustom = 0,          自定义风格//        UIButtonTypeRoundedRect,        

IOS开发学习笔记--语音合成(科大讯飞)

      现在语音服务越来越热,我们平时使用的很多软件都带有语音合成和识别功能,用起来也很方便.说到语音服务,Google和微软都提供过API接口,不过笔者要介绍的是国内的智能语音技术提供商---科大讯飞.之前看过一个比较Google.微软和科大讯飞语音识别引擎的博文(http://fqctyj.blog.163.com/blog/static/70843455201361955322797/),有兴趣可以去看看.笔者接触语音服务的时间也不长,对语音服务也不是很了解,但是拆解过科大讯飞的Dem

IOS开发学习笔记017-什么是IOS开发

应用程序开发流程 1.IOS开发需要思考的问题 用户是谁?不同应用程序的内容和用户体验大不相同,这取决于想要编写的是什么应用程序,它可能是儿童游戏,也可能是待办事项列表应用程序,又或者是测试自己学习成果的应用程序. 应用程序的用途是什么?赋予应用程序一个明确的用途十分重要.了解激发用户使用应用程序的动因是界定用途的一个出发点. 应用程序尝试解决什么问题?应用程序应该完美解决单个问题,而不是尝试解决多个截然不同的问题.如果发现应用程序尝试解决不相关的问题,那么最好考虑编写多个应用程序. 应用程序要