iOS OC04_属性
来源:互联网 发布:淘宝卖家5天不发货赔偿 编辑:程序博客网 时间:2024/04/28 01:21
//
// Student.h
// OC04_属性
//
// Created by dllo on 15/7/17.
// Copyright (c) 2015年 zhozhicheng. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
@interface Student :NSObject
// 1.学生姓名
@property(nonatomic,copy)NSString *stuName;
// 2.学生年龄
@property(nonatomic,assign)NSInteger stuAge;
// 3.学生成绩
@property(nonatomic,assign)CGFloat stuScore;
// 4.学生有一个人的属性
@property(nonatomic,retain)Person *per;
// 5.学生有一个数组的属性
@property(nonatomic,retain)NSArray *arr;
// 6.
@property(readonly,getter=isSelected,nonatomic,assign)BOOL selected;
@end
//
// Person.h
// OC04_属性
//
// Created by dllo on 15/7/17.
// Copyright (c) 2015年 zhozhicheng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Person :NSObject
// 属性
@property NSString *name;
- (void)sayHi;
// 属性的属性
// 1.读写控制:readonly,readwrite
// readonly 设置之后,属性就没有setter方法,默认是readwrite
// setter和getter
// setter和getter的作用是给设置器和访问器的方法重新起一个名字,注意,设置器在名的设置的时候别忘了:(冒号)
@property(setter=nihao:,getter=buhao)NSString *hobby;
// 2.原子性控制
// 通过原子性atomic来监控事务在整个过程中有没有完成,但是一般来讲我们就是对数据的简单赋值,一般这部分我们用非原子性nonatomic
@property(atomic)NSString *sex;
-(void)sayHi;
// 3. 语义设置
// copy assign rutain
// retain一般是对象类型会用到,比如我们自己写的类,还有NSArray会用
// assign一般是NSInteger,CGFloat会使用,因为他们在栈区,不需要内存管理,所以用assign
// copy一般只有字符串会使用
@property(nonatomic,copy)NSString *colour;
@property(nonatomic,assign)NSInteger *age;
@end
//
// Person.m
// OC04_属性
//
// Created by dllo on 15/7/17.
// Copyright (c) 2015年 zhozhicheng. All rights reserved.
//
#import "Person.h"
@implementation Person
// 属性的实现
// 关键词是@synthesize,前面放属性名,后面放对应的成员变量
// 在XCode4.5之后才开始不写的,所以在之前老的工程里,还有大量的@synthesize
//@synthesize name = _name;
- (void)sayHi{
NSLog(@"%@",_name);
}
// 属性一共做了三件事
// 1.声明了设置器setter和访问器getter,
// 2.实现了设置器和访问器
// 3.声明了一个成员变量,成员变量命名会在属性名的前面加一个下划线
// 具体的数据的存储,还是成员变量来完成,属性值不过帮主程序员完成一些琐碎的工作,简化代码
@end
//
// Animal.h
// OC04_属性
//
// Created by dllo on 15/7/17.
// Copyright (c) 2015年 zhozhicheng. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface Animal :NSObject
// 四条属性
@property(nonatomic,copy)NSString *color;
@property(nonatomic,assign)CGFloat size;
@property(nonatomic,assign)NSInteger age;
@property(nonatomic,copy)NSString *type;
// 初始化方法
- (id)initWithColor:(NSString *)color
size:(CGFloat)size
age:(NSInteger)age
type:(NSString *)type;
// 便利构造器
+ (id)animalWithColor:(NSString *)color
size:(CGFloat)size
age:(NSInteger)age
type:(NSString *)type;
@end
//
// Animal.m
// OC04_属性
//
// Created by dllo on 15/7/17.
// Copyright (c) 2015年 zhozhicheng. All rights reserved.
//
#import "Animal.h"
@implementation Animal
- (id)initWithColor:(NSString *)color
size:(CGFloat)size
age:(NSInteger)age
type:(NSString *)type{
self =[superinit];
if (self) {
_age=age;
_color=color;
_size=size;
_type=type;
}return self;
}
+ (id)animalWithColor:(NSString *)color
size:(CGFloat)size
age:(NSInteger)age
type:(NSString *)type{
Animal *animal =[[Animalalloc] initWithColor:colorsize:size age:agetype:type];
return animal;
}
@end
//
// main.m
// OC04_属性
//
// Created by dllo on 15/7/17.
// Copyright (c) 2015年 zhozhicheng. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
#import "Student.h"
#import "Animal.h"
int main(int argc,const char * argv[]) {
//// Person *per =[[Person alloc]init ];
//// // 对象通过设置器对成员变量内容进行修改
//// [per setName:@"你好"];
//// //
//// NSLog(@"%@",[per name]);
//
// Person *per =[[Person alloc] init];
// [per nihao:@"1"];
// [per buhao];
//
// Student *stu=[[Student alloc] init];
// [stu setStuName:@"鹰王"];
// NSLog(@"%@",[stu stuName]);
// // 针对对象的属性,我们可以使用点语法,来获取对象的内容,也可以进行设置
// stu.stuName=@"崔某";
// NSLog(@"%@",stu.stuName);
//通过点语法,可以对属性进行操作,大量节省了代码
// 离=近的是setter方法,其余都是getter方法
// kvc
// key-value-coding 键值对编码
//把属性名看成是kvc中的key键,把要修改的值看成是value,然后通过kvc的方法,把值赋给指定的key
Student *stu=[[Studentalloc] init];
[stu setValue:@"崔某"forKey:@"stuName"];
NSLog(@"%@",stu.stuName);
NSLog(@"%@",[stuvalueForKey:@"stuName"]);
// alloc init
Animal *animalOne=[[Animalalloc] initWithColor:@"红色"size:20 age:20type:@"狗"];
//通过点语法对对象的值进行修改和设置
animalOne.color=@"粉色";
NSLog(@"%@",animalOne.color);
// 便利构造器
Animal *animalTwo=[AnimalanimalWithColor:@"橙色"size:10 age:10type:@"猫"];
animalTwo.type=@"商帅";
NSLog(@"%@",animalTwo.type);
//kvc
[animalOnesetValue:@"白色"forKey:@"color"];
NSLog(@"%@",[animalOnevalueForKey:@"color"]);
return 0;
}
- iOS OC04_属性
- OC04_属性
- OC04_属性,kvc,点语法
- iOS 属性
- iOS 属性
- ios 属性
- ios 属性
- iOS 属性的属性
- iOS动画 属性属性解析
- ios中声明属性
- iOS -- @property属性说明
- iOS---属性方法
- IOS 动态属性使用
- <iOS>属性写法
- iOS ScrollView属性介绍
- IOS tableView常用属性--
- ios retain属性
- ios的@class属性
- 2012年5月SAT香港真题解析
- 整数划分
- Android Studio 手动创建活动(Activity) 第一行代码 第二章
- HTML5的崛起之路
- Visaul Studio 常用快捷键的动画演示
- iOS OC04_属性
- MATLAB中处理边界的函数
- 深入理解Magento - 第五章 Magento资源配置
- distributed OSGI demo
- 基于centos的mysql学习补充一
- 人脸识别相关数据库
- range与arange,生成均布的浮点数序列
- ubantu中使用ssh服务
- epoll之ET与LT模式