OC2_点语法(属性关键字)

//
//  Dog.h
//  OC2_点语法(属性关键字)
//
//  Created by zhangxueming on 15/6/16.
//  Copyright (c) 2015年 zhangxueming. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface Dog : NSObject
//属性关键字
//assgin(缺省)直接赋值 //基本类型 代理对象指针

//retain 先release 再 retain //除了基本类型 字符串类型 代理对象, 剩下的通常用 retain

//copy   先release 再 copy  //字符串对象用copy

//atomic(缺省),nonatomic
//原子性的      非原子性的

//readwrite(缺省) 展开对应的setter getter方法
//readonly 只展开对应的getter方法

//setter getter  修改setter getter方法的方法名
//点语法访问不受影响
//经典访问要使用新的方法名

@property (assign,atomic)NSInteger age;

@property (assign, nonatomic, readwrite)float weight;

@property (copy,nonatomic)NSString *name;

@property (assign,setter=setNewNumber:,getter=getNumber) NSInteger number;

@end
//
//  Dog.m
//  OC2_点语法(属性关键字)
//
//  Created by zhangxueming on 15/6/16.
//  Copyright (c) 2015年 zhangxueming. All rights reserved.
//

#import "Dog.h"

@implementation Dog

@synthesize age = _age;

- (NSInteger)age
{
    NSLog(@"getter");
    return _age;
}

- (void)setAge:(NSInteger)age
{
    NSLog(@"setter");
    _age = age;
}

@end
//
//  main.m
//  OC2_点语法(属性关键字)
//
//  Created by zhangxueming on 15/6/16.
//  Copyright (c) 2015年 zhangxueming. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Dog.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Dog *dog = [[Dog alloc] init];
        dog.name= @"小白";
        dog.age = 12;
        dog.weight = 34.5;
        NSLog(@"name = %@ age = %li weight = %.2f", dog.name, dog.age, dog.weight);

        dog.number = 100;
        NSLog(@"number = %li", dog.number);

        [dog setNewNumber:200];
        NSLog(@"number = %li", [dog getNumber]);

    }
    return 0;
}
时间: 2024-10-28 00:11:55

OC2_点语法(属性关键字)的相关文章

Java基础语法(一)---关键字、常量、变量、运算符

Java基础语法(一)---关键字.常量.变量.运算符一.关键字 定义:被Java赋予了特殊含义的单词. 特点:体现上都是英文小写. 1. 用于定义数据类型的关键字 基本数据类型: 整数类型: byte(1字节,最大值127) short(2字节,最大值为2^15-1) int(4字节,最大值为2^31-1) long(8字节,最大值为2^63-1) 浮点类型: float (单精度实数在内存中占32bit 有效数字为6~7位) double(双精度实数占内存单元为64bit 有效数字为15~1

Visual C++ 编译器自动假定带 .C 扩展名的文件是 C 文件而不是 C++ 文件,并且拒绝 C++ 语法和关键字(c语言只能在大括号最前面申明变量)

今天在编译OpenGL红宝书附带源码中的light.c文件时遇到一个诡异的问题: 如图light .c,在不做任何修改的情况编译OK.然而只要在某些地方写了可执行代码,则会无法通过编译器编译! (这几行代码如果写在main函数里的第一句则OK) 我用的VS08.我把该文件发给其他朋友(用的VS10),同样也是这样的问题. 然而,我把文件名改成light.cpp后,问题解决了. 现在的问题是,代码文件按的后缀背后,会如何影响编辑器的编译呢? 可以做一个简单的测试: [cpp] view plain

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

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

OC 属性关键字

// 属性关键字 /* 1.ARC下(自动管理内存,自动引用计数)(IOS) strong,weak ----------------------------------------- 2.MRC下(手动管理内存,手动引用计数) copy       NSString assgin     基本数据类型 retain     对象类型 3.原子性 atomic      支持多线程 nonatomic   不支持多线程  <---目前就用这个 --------------------------

没人能把一种程序语言的所有语法和关键字都记住,如果不知道,就查阅参考书

没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就查阅参考书!!! 没人能把一种程序语言的所有语法和关键字都记住,不知道,就

@property属性关键字

关于@property属性关键字使用注意:* weak(assign) :  代理\UI控件* strong(retain) : 其他对象(除代理\UI控件\字符串以外的对象)* copy : 字符串* assign : 非对象类型(基本数据类型int\float\BOOL\枚举\结构体)

ARC声明属性关键字详解(strong,weak,unsafe_unretained,copy)

ARC声明属性关键字详解(strong,weak,unsafe_unretained,copy) 在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了,在此我也不介绍,网上有很多相关文章. 但是在iOS 5中加入ARC,产生了几个新的关键字strong, weak, unsafe_unretained.  我们可以将其与以前的关键字对应学习: strong与retain类似,weak和unsafe_unretained这两个新关键字与assign类

iOS 内存管理之属性关键字

你好2019!一起努力呀! 主要分三种类型: 1.原子操作相关: nonatomic.atomic nonatomic:非原子操作,对属性赋值的时候不加锁,多线程并发访问会提高访问效率 atomic:原子操作,提供多线程安全,只在其相关的setter或getter方法的时候有加锁安全机制,其他的线程安全不负责 属性默认的是原子操作,但是一般开发使用的是非原子操作.因为关于线程安全,只是依赖原子操作根本实现不了 2.内存管理相关:assign.weak.copy.strong assign:修饰基

iOS 声明属性关键字讲解

atomic: 原子操作(原子性是指事务的一个完整操作,操作成功就提交,反之就回滚. 原子操作就是指具有原子性的操作)在objective-c 属性设置里面 默认的就是atomic ,意思就是 setter /getter函数是一个原子操作,如果多线程同时调用setter时,不会出现某一个线程执行完setter所有语句之前,另一个线程就开始执行setter,相当于 函数头尾加了锁 . 这样的话 并发访问性能会比较低 . nonatomic: 非原子操作 一般不需要多线程支持的时候就用它,这样在