OC的@property 和 @synthesize id
学习java的JDBC,成员变量的setter和getter,eclipse都能帮我们自动生成;当然xcode这款编译器也很强大,也能自动生成;
1:@property
@property是写在类的声明中的,具体写法;
@interface Person : NSObject
{
_age;
}
@property int age; // 这句话相当于下边的getter和setter,但是注意age没有'_',但是就是为有下划线的age生成的,这样方便了点语法的调用;
// - (void)setAge:(int)age;
// - (int)age;
@end
所以写法:@property (成员变量的类型) 去掉下划线的成员变量名
2:@synthesize:setter和getter方法的实现,在implementation中;
@implementation @synthesize age = _age; // 注意格式,等号左边表示实现age的setter和getter,即 setAge 和 age; 等号右边表示访问那个成员变量; // 代替了下面这两个方法;
/*
- (void)setAge:(int)age
{
_age = age;
}
- (int)age
{
return _age;
}
*/
@end
3:@property @synthesize后边可以同时并列多个成员变量,前提是这几个成员变量的类型一样
// @property写法
@property int age, weight; // 以逗号分隔,前提是age和weight都是int型的;
// @synthesize写法
@synthesize age = _age, weight = _weight;
4:如果自己没有明确的定义成员变量,比如_age,然后写了@property int age;这句话会自动为我们生成_age这个成员变了,但是它的访问权限是private的
5:现在版本的@property功能更强大,独揽了setter和getter的声明和实现;可以只写@property,而不用写@synthesize,xcode也会自动生成setter和getter的声明与实现,并且你也可以不用定义成员变量,它也能自动为我们生成带有下划线的成员变量,只不过是private的;
@interface Student : NSObject
@property int age; // 这句话做了3件事
/*
1:为我们生成了_age这个成员变量,private的;
2:声明了age得setter和getter方法;
3:在implementation中实现了setter和getter
*/
@end
@property @synthesize的使用注意;
如果@synthesize age; 这样写 他会访问的时和age同名的成员变量,不会访问_age; 如果没有age,他会自动生成@private的age;
方法也是一样,如果setter和getter我们自己写了,它会优先用我们自己写得,如果没有,它才会自动生成;xcode的特性就是这样,优先选择我们自己写得,如果我 们没写,它才自动生成;
id
万能指针,能指向任何OC对象,定义方式:id d = [Person new];注意定义时不要加*;如果说OC中所有的类都继承了NSObject,那么id相当于: NSObject *;
OC的@property 和 @synthesize id的更多相关文章
- OC语言@property @synthesize和id
OC语言@property @synthesize和id 一.@property @synthesize关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明 ...
- 李洪强iOS开发之OC语言@property @synthesize和id
OC语言@property @synthesize和id 一.@property @synthesize关键字 注意:这两个关键字是编译器特性,让xcode可以自动生成getter和setter的声明 ...
- 「OC」@property @synthesize和id
一.@property @synthesize关键字 这两个关键字是编译器特性,让Xcode可以自动生成getter和setter. (一)@property 关键字 @property 关键字可以自 ...
- Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...
- OC中两个关键字的作用:@property和@synthesize
两个关键字的使用:@property和@synthesize 一.@property关键字这个关键字是OC中能够快速的定义一个属性的方式,而且他可以设置一些值,就可以达到一定的效果,比如引用计数的问题 ...
- OC语法5——@property和@synthesize
@property和@synthesize: 我们回想一下: 在OC中我们定义一个Student类需要两个文件Student.h 和 Student.m. Student.h(声明文件):定义成员变量 ...
- OC学习篇之---@property和@synthesize的使用
在之前一片文章我们介绍了OC中的内存管理:http://blog.csdn.net/jiangwei0910410003/article/details/41924683,今天我们来介绍两个关键字的使 ...
- OC开发系列-@property和@synthesize
property和synthesize 创建一个Person类.提供成员属性的_age和_height的setter和getter方法. #import <Foundation/Foundati ...
- OC基础--Property
编译器指令: 用来告诉编译器要做什么 @property: @property是编译器的指令 告诉编译器在@interface中自动生成setter和getter的声明 @synthesize: @s ...
随机推荐
- Unity之屏幕画线
using UnityEngine;using System.Collections; public class DrawRectangle : MonoBehaviour { public Colo ...
- SharePoint 2010 配置基于MemberShip的身份验证
场景:通常需要为sharepoint打通其他的系统整合到sharepoint认证,ad通常是为内部域用户,外网访问的可以使用membership来登录,那么这个既可以内部用户访问,外部用户也可以访问 ...
- PAT1028—— 人口普查
某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是2014年9月 ...
- iOS 简单block的使用
1.第一种方法 声明block: - (void)test:(int) param_1 completion:(void(^)(int)) completion; 实现block: -(void)te ...
- CPU 硬盘性能到底相差多少
本文以一个现代的.实际的个人电脑为对象,分析其中CPU(Intel Core 2 Duo 3.0GHz)以及各类子系统的运行速度——延迟和数据吞吐量.通过粗略的估算PC各个组件的相对运行速度,希望能给 ...
- MVC 开启gzip压缩
using System.IO; using System.IO.Compression; using System.Web; using System.Web.Mvc; public class C ...
- Server.UrlEncode、HttpUtility.UrlDecode的区别
Server.UrlEncode.HttpUtility.UrlDecode的区别 在对URL进行编码时,该用哪一个?这两都使用上有什么区别吗? 测试: string file="文件上(传 ...
- 【学习笔记】【C语言】变量类型
根据变量的作用域,可以分为: 1.局部变量: 1> 定义:在函数(代码块)内部定义的变量(包括函数的形参) 2> 作用域:从定义变量的那一行开始,一直到代码块结束 3> 生命周期:从 ...
- AMQ学习笔记 - 20. 使用Apache ActiveMQBrowser监控ActiveMQ
概述 Apache ActiveMQBrowser可以用于查看AMQ中的消息.这里对其使用方法进行简单介绍. 使用介绍 1.下载并解压缩 下载地址:Apache ActiveMQBrowser,当前最 ...
- 如何给xml应用样式
引子:可扩展标记语言xml(Extensible Markup Language)自己平常也用到的不多,除了在ajax处理服务器返回的数据可能会用到外(不过一般用json处理数据的比较常见)还真没怎么 ...