Objective-C - @property参数

@property参数

/*
 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
@implementation Person

@end

Book类

@interface Book : NSObject

@end
@implementation Book

@end

Student类

#import "Book.h"

@interface Student : NSObject

@property (retain) Book *book;

@property (retain) NSString *name;

@end
@implementation Student

- (void)dealloc
{
    [_book release];
    [_name release];

    [super dealloc];
}

@end
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;
}
时间: 2024-09-30 06:54:08

Objective-C - @property参数的相关文章

黑马程序员---OC基础6【内存管理】【手动内存管理】【单、多个对象的内存管理】【*@property参数】【@class的使用】【NSString类的内存管理】【autorelease使用】

------- iOS培训.Android培训.Java培训.期待与您交流! ---------- [内存管理] 1.内存管理概念 由于移动设备内存及其有限,所以每个app所占的内存也是有限的 需要回收一些不使用的空间 2.OC内存管理的范围 管理任何继承NSOject的对象,对其他的基本数据类型无效 主要管理堆区中的对象的内存管理   3.内存管理的原理 1)对象所有权概念 任何对象都可以能拥有一个或多个所有者,只要一个对象至少还拥有一个所有者,他就会继续存在 cocoasu所有权策略 任何自

小白学开发(iOS)OC_ @property 参数(2015-08-05)

// //  Person.h //  手动内存管理 // //  Created by admin on 15/8/5. //  Copyright (c) 2015年 admin. All rights reserved. // #import <Foundation/Foundation.h> #import "Car.h" @interface Person : NSObject /* @property 参数的作用 1. 生成set和get方法的声明 2. 生成s

第四天:内存管理-property参数

1.通常引用一个类有两种方法: 1,通过#import 方法引入 2.通过@class 引入 #import  和@class 的区别: #import "B.h" @interface A:NSObject { B *b; } @end 1.#import 方式会包含被引用类的所有信息,包括被引用类的变量和方法.@class 方式只是告诉编译器在a.h文件中B *b只是类的声明,具体这个类里有什么信息,这是不需要知道,等实现文件中真正用到的是否,才会去查看B类中信息. 2.使用@cl

OC语法7——内存管理之@property参数

@property的参数: 我们已经知道为了给开发者提供便捷,OC提供了@porperty关键字,它可以自动生成属性的set和get方法. 但是我们又知道,在OC中还面临者对象内存管理的问题,而且我们遵循“谁创建,谁释放”的原则管理内存. 所以我们得重写set方法:把原先的成员变量(对象)release掉,然后给新成员变量retain. 还得重写realloc方法:在realloc中调用release,释放该对象. 呵呵.我们引入@property的目的就是为了让其自动生成set和get方法的,

黑马程序员--property参数

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1,set方法内存管理相关的参数 *retain:release旧值,retain新值(适用于OC对象类型) *assign:直接赋值(默认,只用于非OC对象类型) *copy: release旧值,copy新值 2,是否要产生set方法: *readwrite:同时产生setter和getter的声明,实现(默认) *readonly : 只会生产getter的声明,实现 @property

iOS_ @property参数分析

@propert的相关参数 因为现在Xcode都是默认使用ARC所以现在分析主要是以ARC为主. [email protected]有哪些参数? 第一组: 内存管理特性 retain  assign  copy  strong    weak     unsafe_unretained     autoreleasing 第二组: 读 /写特性 readwrite  readonly 第三组: 多线程特性 nonatomic  atomic 第四组: 方法名特性 setter  getter 2

@property 参数

/* 1.set方法内存管理相关的参数 * retain : release旧值,retain新值(适用于OC对象类型) * assign : 直接赋值(默认,适用于非OC对象类型) * copy : release旧值,copy新值 2.是否要生成set方法 * readwrite : 同时生成setter和getter的声明.实现(默认) * readonly : 只会生成getter的声明.实现 3.多线程管理 * nonatomic : 性能高 (一般就用这个) * atomic : 性

objective c, property, copy

@property (copy) nsmutablearray *array -copy, as implemented by mutable Cocoa classes, always returns their immutable counterparts. Thus, when an NSMutableArray is sent -copy, it returns an NSArray containing the same objects. http://stackoverflow.co

常用的@property参数

copy : NSString\NSMutableString\block weak : 代理\UI控件 strong : 其他OC对象 assign : 基本数据类型(int\float)\枚举\结构体