OC MRC之 @property参数(代码分析)
第一部分
//
// 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 ;
}
第二部分
//
// 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 ;
}
OC MRC之 @property参数(代码分析)的更多相关文章
- 七.OC基础加强--1.内存管理 2.野指针,内存泄露 3.set方法的内存管理 4.@property参数 5.@class和循环retain的使用 6.NSString的内存管理
1,内存管理简单介绍 1,为什么要有内存管理? malloc selloc dealloc```需要回头复习 一般的内存 4s 是512m内存:6 是1024m内存: 当内存过大时,会耗尽内存.出现程 ...
- JavaBean 基础概念、使用实例及代码分析
JavaBean 基础概念.使用实例及代码分析 JavaBean的概念 JavaBean是一种可重复使用的.且跨平台的软件组件. JavaBean可分为两种:一种是有用户界面的(有UI的):另一种是没 ...
- JQuery data API实现代码分析
JQuery data 接口是什么? .data() Store arbitrary data associated with the matched elements or return the v ...
- Device Tree(三):代码分析【转】
转自:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html Device Tree(三):代码分析 作者:linuxer 发布于:201 ...
- Device Tree(三):代码分析
一.前言 Device Tree总共有三篇,分别是: 1.为何要引入Device Tree,这个机制是用来解决什么问题的?(请参考引入Device Tree的原因) 2.Device Tree的基础概 ...
- 【转】Device Tree(三):代码分析
原文网址:http://www.wowotech.net/linux_kenrel/dt-code-analysis.html 一.前言 Device Tree总共有三篇,分别是: 1.为何要引入De ...
- Linux内核启动代码分析二之开发板相关驱动程序加载分析
Linux内核启动代码分析二之开发板相关驱动程序加载分析 1 从linux开始启动的函数start_kernel开始分析,该函数位于linux-2.6.22/init/main.c start_ke ...
- tensorflow笔记:多层LSTM代码分析
tensorflow笔记:多层LSTM代码分析 标签(空格分隔): tensorflow笔记 tensorflow笔记系列: (一) tensorflow笔记:流程,概念和简单代码注释 (二) ten ...
- 1.ARC下是否有内存溢出等问题 2.@property参数 3.#import和@class的区别
1.ARC下是否有内存溢出等问题? 答案:必须要担心啊,ARC也不是万能的.答案:必须要担心啊,ARC也不是万能的.这里主要是涉及到集合类的数据类型 比如数组,我们定义了一个可变数组muarr1, ...
随机推荐
- Linux学习笔记之passwd:Authentication token manipulation error_错误的解决办法
如果在linux中,不管是root用户还是普通用户登录后,修改自己的密码,出现—passwd:Authentication token manipulation error—错误的解决办法: root ...
- Linux 环境 HTTP 服务器
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <netinet/in ...
- html模板生成静态页面及模板分页处理
它只让你修改页面的某一部分,当然这"某一部分"是由你来确定的.美工先做好一个页面,然后我们把这个页面当作模板(要注意的是这个模板就没必要使用EditRegion3这样的代码了,这种 ...
- 20145317《网络对抗》shellcode注入&Return-to-libc攻击深入
20145317<网络对抗>shellcode注入&Return-to-libc攻击深入 学习任务 shellcode注入:shellcode实际是一段代码,但却作为数据发送给受攻 ...
- ad各层
mechanical 机械层 keepout layer 禁止布线层 top overlay 顶层丝印层 bo ...
- nmap参数思维导图
链接:https://pan.baidu.com/s/1vD0A6olQbVNmCCirpHBm0w 提取码:o994
- 【Android实验】组件通信Intent
实验目的 [TOC] 了解使用Intent进行组件通信原理 掌握使用Intent启动Activity的方法 熟悉和掌握Android组件间通信的方式和技巧 实验要求 设计一个主Activity和一个子 ...
- 【TCP/IP详解 卷一:协议】TCP定时器 小结
前言 在有关TCP的章节中,介绍了四种定时器,它们体现了TCP的可靠性,其中最重要的 就是重传定时器了,剩下的定时器都是为了解决TCP的理解上的一些问题而设置的. 四种定时器: 2MSL定时器,出现在 ...
- UVa 10570 外星人聚会
https://vjudge.net/problem/UVA-10570 题意:输入1~n的排列,每次可以交换两个整数,求出最少交换次数使之变成有序的环状序列. 思路:主要的解题方法就是寻找置换环,举 ...
- nginx缓存功能的设置
首先用的缓存是proxy_cache. 在http段里加入下列几句: [plain] view plain copy proxy_connect_timeout 5; proxy_read_tim ...