oc27--synthesize,省略getset实现

//
//  Person.h

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    @public
    int _age;
    int age;
    int _number;
}

/*
@porperty是一个编译器指令
 在Xocde4.4之前, 可以使用@porperty来代替getter/setter方法的声明
 也就是说我们只需要写上@porperty就不用写getter/setter方法的声明

 编译器只要看到@property, 就知道我们要生产某一个属性的getter/setter方法的声明
 - (void)setAge:(int)age;
 - (int)age;
 */
@property int age;  //就可以使用  [p setAge:88];
@end
//
//  Person.m

#import "Person.h"

@implementation Person
/*
 @synthesize是一个编译器指令, 它可以简化我们getter/setter方法的实现*/

@synthesize age = _age;  // 赋值给_age
/*
 - (void)setAge:(int)age
 {
 _age = age;
 }
 - (int)age
 {
 return _age;
 }
 */

/*@synthesize age = _number;   赋值给_number
 - (void)setAge:(int)age
 {
    _number = age;
 }
 - (int)age
 {
    return _number
 ;
 }
 */

// 如果在@synthesize后面没有告诉系统将传入的值赋值给谁, 系统默认会赋值给和@synthesize后面写得名称相同的成员变量
/*
// _age? age : age
@synthesize age;  //就可以使用  [p setAge:88];

- (void)setAge:(int)age
{
    _age = age;
}
- (int)age
{
    return _age;
}
 */
@end
//
//  main.m
//  synthesize基本使用
//
//  Created by xiaomage on 15/6/23.
//  Copyright (c) 2015年 xiaomage. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"

int main(int argc, const char * argv[]) {
    Person *p = [Person new];
    [p setAge:88];
    NSLog(@"age = %i , p->_age = %i", [p age], p->_age);
    NSLog(@"_age = %i, _number = %i", p->_age, p->_number);
    NSLog(@"_age = %i, age = %i", p->_age, p->age);

    return 0;
}
时间: 2024-08-08 03:08:13

oc27--synthesize,省略getset实现的相关文章

如果将synthesize省略,语义特性声明为assign retain copy时,自己实现setter和getter方法

如果将synthesize省略,并且我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和getter时方法内部实现 - (void)setName:(NSString *)name{ _name = name; } - (NSString *)name{ return _name; } 2,当把语义特性声明为retain时,setter和getter方法内部实现 - (void)set

假设synthesize省略,语义属性声明assign retain copy时间,为了实现自己的setter和getter方法

假设synthesize省略,而且我们自己实现setter和getter方法时,系统就不会生成相应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和getter时方法内部实现 - (void)setName:(NSString *)name{ _name = name; } - (NSString *)name{ return _name; } 2,当把语义特性声明为retain时,setter和getter方法内部实现 - (void)setN

BeanUtils --- 封装属性到对象中

1.注意需要两个jar包: commons-beanutils-1.8.3.jar  和 commons-logging-1.1.3.jar public class Admin {//省略getset等通用方法 private int id; private String username; private String pwd; private Date date; } public class APP { @Test public void testBeanUtils() throws E

iOS开发——面试篇&amp;面试总结(三)

关于不同属性策略对应的setter和getter方法 如果将synthesize省略,并且我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和getter时方法内部实现 1 - (void)setName:(NSString *)name{ 2 _name = name; 3 } 4 - (NSString *)name{ 5 return _name; 6 } 2,当把语义特性声明为

static关键字,引发的spring普通类获取spring的bean的思考

在c++和java中static关键字用于修饰静态成员变量和成员函数 举例一个普通的javabean class AA { int a; static int b; geta/seta;//此处省略getset getb/setb; } 如果创建了一个对象AA, AA a =new AA(); 这个时候只会在内存中给这个对象分配四个字节,也就是a变量所占的字节数,因为static申明的全局变量在全局区中,是所有这个类的对象共有的,例如: a.setB(10); AA b =new A(); Sy

OC属性总结

<pre name="code" class="cpp">    setter 方法的作用:为单一的变量赋值. setter 方法规范写法:1.- 号方法,无返回值. 名字以set开头 + 要设置的变量的实例变量名(首字母要大写):(setter方法有且只有一个参数) + 参数的类型(和实例变量类型相同) + 参数名(和实例变量名相同) getter 方法的作用:获取单一的实例变量的值. getter 方法的命名规范: - 号方法,有返回值 (返回值类型

iOS开发-面试总结(十三)

关于不同属性策略对应的setter和getter方法 如果将synthesize省略,并且我们自己实现setter和getter方法时,系统就不会生成对应的setter和getter方法,还有实例变量 1,当把语义特性声明为assign时,setter和getter时方法内部实现 1 - (void)setName:(NSString *)name{ 2 _name = name; 3 } 4 - (NSString *)name{ 5 return _name; 6 } 2,当把语义特性声明为

OC学习 -- Property

属性是OC2.0 之后出现的语法 帮我们生产setter 和 getter 方法的声明//@property NSString *name;//@property 关键字//NSString * 属性类型(和对应的实例变量类型一致)//name 属性名(决定了 setter getter方法名)//帮我们生成 name的setter (setName:) 和 getter (name)的方法的声明 @synthesize name = _sex , sex = _name , age = _ag

OC基础之-Property(属性)和点语法

学习属性之前回忆一下之前学到的setter方法和getter方法: (1)setter方法的作用:用来为单一的实例变量赋值(只能是一个实例变量,多了的叫做get方法) (2)setter方法的写法标准: - 号方法,  无返回值,   名字以set开头+要设置的变量的实例变量名(首字母需大写):(setter方法有且只有一个参数)+参数的类型(和实例变量的类型相同)+参数名(和实例变量名相同) (3)getter方法的作用:用来获取单一实例变量的值. (4)getter方法的写法标准: - 号方