属性声明和实现



//
//  Person.h
//  属性的声明和实现
//
//  Created by MAC on 15/12/10.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    @private
    int _pid;
    NSString *_name;
    int _age;
}
-(void)setPid:(int)pid;
-(void)setName:(NSString*)name;
-(void)setAge:(int)age;

-(int)pid;
-(NSString*)name;
-(int)age;
@end

 
//
//  Person.m
//  属性的声明和实现
//
//  Created by MAC on 15/12/10.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import "Person.h"

@implementation Person
-(void)setPid:(int)pid{
    self->_pid = pid;
}
-(void)setName:(NSString*)name{
    self->_name = name;
}
-(void)setAge:(int)age{
    self->_age = age;
}
-(int)pid{
    return _pid;
}
-(NSString*)name{
    return _name;
}
-(int)age{
    return _age;
}
@end


//
//  main.m
//  属性的声明和实现
//
//  Created by MAC on 15/12/10.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *person = [[Person alloc]init];
        [person setPid:444];
        [person setName:@"xiaoren"];
        [person setAge:20];
        NSLog(@"%d %@ %d",person.pid,person.name,person.age);  //没有参数的方法可以直接用点语法
    }
    return 0;
}
      可以用@property简化方法  
//
//  Person.h
//  属性的声明和实现
//
//  Created by MAC on 15/12/10.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Person : NSObject
{
    @private
    int _pid;
    NSString *_name;
    int _age;
}

@property int pid;
@property NSString *name;
@property int age;

@end


//
//  main.m
//  属性的声明和实现
//
//  Created by MAC on 15/12/10.
//  Copyright © 2015年 MAC. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Person.h"
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Person *person = [[Person alloc]init];
        [person setPid:33];
        [person setName:@"renren"];
        [person setAge:20];
        int pid = [person pid];
        NSString *name = [person name];
        int  age = [person age];
        NSLog(@"%d %@ %d",pid,name,age);

    }
    return 0;
}
 
时间: 2024-08-05 11:09:49

属性声明和实现的相关文章

iOS:不同属性声明方式的解析

代码: /* 属性声明方式说明: ----------------------- 1 @interface ... { id name } @end 这样声明的属性其实可以认为是private属性,因为它只能在方法里通过name引用,外部无法通过“object.name”的方式进行引用 (内部也不能通过self引用) ---------------------- 2 @interface ... @property id name @end 这样声明的属性可以认为是public属性,内部通过“s

黑马程序员——oc语言学习心得—— 属性声明和赋值

黑马程序员——oc语言学习心得—— 属性声明和赋值 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,在oc中所有类继承与终极父类Object2,声明字符变量采用N是string  *_xxx 实例变量一般以下划线开头3,在oc中方法以+ -号区分 -号开头是实例方法或对象方法  +号开头是类方法  前置用对象调用 后者用类名调用4,在xcode4以后声明@property 不用在写@snysize  自动生成get.set方法5,属性

[转]ASP.NET自定义控件复杂属性声明持久性浅析

在自定义控件的开发过程中,我们经常要给控件添加一些复杂类型的属性.利用声明持久性(Declarative Persistence)可使得页面开发人员能够让页面开发人员在ASP.NET页面中,声明性地设置这些复杂属性值,而无需编写任何C#或者VB.NET代码. 参见下面的例子: GridView的DataKeyNames属性,其数据类型是string[]: <asp:GridView ID="GridView1" runat="server" DataKeyNa

iOS的属性声明:retain和strong的区别

声明属性时用strong或者retain效果是一样的(貌似更多开发者更倾向于用strong).不过在声明Block时,使用strong和retain会有截然不同的效果.strong会等于copy,而retain竟然等于assign! 当然定义Block还是应该用copy(还有其他需要注意的地方,可以参考这篇文章:iOS: ARC和非ARC下使用Block属性的问题),因为非ARC下不copy的Block会在栈中,ARC中的Block都会在堆上的. 可以这样复现问题.在非ARC环境下,定义一个简单

声明函数的属性

在GNU C中,你可以声明关于在你程序中调用的函数的某些东西,来帮助编译器优化函数调用和更仔细地检查你的代码. 关键字__attribute__允许你在声明时指定特殊的属性.跟在这个关键字后面的是双重圆括号里面的属性说明.有十四个属性noreturn, pure, const, format, format_arg, no_instrument_function, section, constructor, destructor, unused, weak, malloc, alias and

Object-C 声明属性为什么用下划线,代码规范和编程风格

原文:http://blog.sina.com.cn/s/blog_7b9d64af0101923n.html 在阅读和书写关于iPhone编程的代码的时候,发现有很多这样的情况: 看到很多源代码里面,使用前面带下划线变量,然后在@synthesize 语句中 在用一个不带下划线的变量名. 这样做,到底有什么作用? 因为我常常是以这种方式来做的: *.h中申明变量 #import <UIKit/UIKit.h> @interface NewPlayerController : UIViewCo

在类别中声明属性

除了扩展之外,其他类别都无法向类中新增实例变量,所以,编译器无法把实现属性所需的实例变量合成出来. 从概念上讲,属性是封装数据的方式.类别是扩展类功能的手段,而非封装数据.因此,一般情况下应该避免把属性声明在类别中,而应该声明在"主接口"中. 如果不得不这么做的话,可以使用关联对象辅助实现: // //  NimoPerson+Friendship.h //  PersonDemo // //  Created by Tony on 15/8/17. //  Copyright (c)

iOS基础知识之属性及属性关键字

iOS属性及属性关键字 一.属性功能:1.给现有的成员变量生成一对setter/getter方法.2.如果没有声明成员变量,自动声明一个_属性名的私有变量(默认的成员变量是受保护的). 二.属性关键字:assign 默认(缺省)关键字,基本数据类型的赋值.MRC:手动管理内存retain 对象的属性声明,保存引用计数,如果别的对象使用当前对象,则该对象的计数器加1,即两个对象同时指向同一块内存.copy 对象的属性声明,直接拷贝对象为一个新的副本,而被拷贝的对象的计数器不会加1,即两个对象分别指

iOS 成员变量,实例变量,属性变量的区别,联系

在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton; @end 在现在iOS版本中: 苹果将默认编译器从GCC转换为LLVM(low leve