OC MRC之 @property参数(代码分析)
2015-12-17 12:52
337 查看
第一部分
第二部分
// // main.m // 04-@property参数 // // Created by apple on 13-8-9. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> @interface Book : NSObject @end #import "Book.h" @implementation Book @end #import <Foundation/Foundation.h> #import "Book.h" @interface Person : NSObject @property int age; // retain : 生成的set方法里面,release旧值,retain新值 @property (retain) Book *book; @property (retain) NSString *name; @end #import "Person.h" @implementation Person //- (void)setBook:(Book *)book //{ // if (_book != book) // { // [_book release]; // // _book = [book retain]; // } //} - (void)dealloc { [_book release]; [_name release]; [super dealloc]; } @end #import <Foundation/Foundation.h> #import "Book.h" @interface Student : NSObject @property (retain) Book *book; @property (retain) NSString *name; @end #import "Student.h" @implementation Student - (void)dealloc { [_book release]; [_name release]; [super dealloc]; } @end #import <Foundation/Foundation.h> #import "Person.h" #import "Book.h" int main() { Book *b = [[Book alloc] init]; Person *p = [[Person alloc] init]; p.book = b; NSLog(@"%ld", [b retainCount]); [p release]; [b release]; return 0; }
第二部分
// // main.m // 05-@property参数 // // Created by apple on 13-8-9. // Copyright (c) 2013年 itcast. All rights reserved. // #import <Foundation/Foundation.h> /* 1.set方法内存管理相关的参数 * retain : release旧值,retain新值(适用于OC对象类型) * assign : 直接赋值(默认,适用于非OC对象类型) * copy : release旧值,copy新值 2.是否要生成set方法 * readwrite : 同时生成setter和getter的声明、实现(默认) * readonly : 只会生成getter的声明、实现 3.多线程管理 * nonatomic : 性能高 (一般就用这个) * atomic : 性能低(默认) 4.setter和getter方法的名称 * setter : 决定了set方法的名称,一定要有个冒号 : * getter : 决定了get方法的名称(一般用在BOOL类型) */ @interface Person : NSObject // 返回BOOL类型的方法名一般以is开头 @property (getter = isRich) BOOL rich; // @property (nonatomic, assign, readwrite) int weight; // setWeight: // weight // @property (readwrite, assign) int height; @property (nonatomic, assign) int age; @property (retain) NSString *name; @end #import "Person.h" @implementation Person @end #import <Foundation/Foundation.h> #import "Person.h" int main() { Person *p = [[Person alloc] init]; p.rich = YES; BOOL b = p.isRich; return 0; }
相关文章推荐
- Spring Mvc学习笔记 前言
- 软件工程 总结+视图+代码
- Java调试那点事
- thinkphp3.2 验证码生成和点击刷新验证码示例
- java 回调函数(callback)详解
- 编译安装LAMP实现PHP作为模块、FastCGI分离等方式
- java学习笔记-理解java语言的跨平台
- Windows下Qt Creator使用版本控制器Git来进行版本控制,GitHub进行代码托管
- Java线程:概念与原理
- OC MRC之set方法内存管理(代码分析)
- Python脚本实现项目工程自动远程部署
- 【Java EE 学习 72 下】【数据采集系统第四天】【移动/复制页分析】【使用串行化技术实现深度复制】
- OC MRC之多对象之间管理(代码分析)
- Python]新手写爬虫全过程
- java.lang.UnsatisfiedLinkError: Native Library * already loaded in another classloader
- OC MRC之计数器的基本操作(代码分析)
- Python脚本实现发送邮件功能
- SpringMVC——接收请求参数和页面传参
- 第13周项目1 算法验证—Prim算法+Kruskal算法
- rbenv-install-and-using