属性修饰词

接口文件1:Animal.h

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

@interface Animal : NSObject
{
//    NSString *_color;
//    NSString *_name;
    Cat *_cat;
}
@property (nonatomic,assign,readwrite) NSString *color,*name;
@property (nonatomic,retain,readwrite) Cat *cat;
- (instancetype) init;
- (void) run;
- (void) dealloc;

@end

实现文件1:Animal.m

#import "Animal.h"

@implementation Animal
- (instancetype) init
{
    if ([super init])
    {
        _color = @"";
        _name = @"";
    }
    return self;
}
- (void) run
{
    NSLog(@"%s",__PRETTY_FUNCTION__);
}
- (void) dealloc
{
    [_cat release];
    [super dealloc];
}

@end

 

接口文件2:Dog.h

#import "Animal.h"

@interface Dog : Animal
{
    int _age;
}
@property (nonatomic,assign) int age;
- (void) bark;
- (void) dealloc;

@end



实现文件2:Dog.m

#import "Dog.h"

@implementation Dog
- (void) bark
{
    NSLog(@"汪汪!");
}
- (void) dealloc
{
    [super dealloc];
}

@end

 

接口文件3:Cat.h

#import <Foundation/Foundation.h>

@interface Cat : NSObject
{
@private
    int weight;
}
- (void) jump;
- (void) dealloc;

@end

 

实现文件3:Cat.m

#import "Cat.h"

@implementation Cat
- (void) jump
{
    NSLog(@"%s",__PRETTY_FUNCTION__);
}
- (void) dealloc
{
    [super dealloc];
}

@end

 

测试文件:main.m

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Dog.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        Animal *animal = [[Animal alloc] init];
        Dog *dog = [[Dog alloc] init];
        Cat *cat = [[Cat alloc] init];
        Cat *cat1 = [[Cat alloc] init];
        [cat1 autorelease];
        
        NSLog(@"%lu",[animal retainCount]);
        NSLog(@"%lu",[dog retainCount]);
        NSLog(@"%lu",[cat retainCount]);
        NSLog(@"%lu",[cat1 retainCount]);
        
        animal.cat = cat;
        dog.cat = cat;
        
        NSLog(@"%lu",[animal retainCount]);
        NSLog(@"%lu",[dog retainCount]);
        NSLog(@"%lu",[cat retainCount]);
        NSLog(@"%lu",[cat1 retainCount]);
        
        [animal release];
        NSLog(@"%lu",[animal retainCount]);
        [dog release];
        NSLog(@"%lu",[dog retainCount]);
        [cat release];
        NSLog(@"%lu",[cat retainCount]);
        NSLog(@"%lu",[cat1 retainCount]);
        
    }
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}

转载于:https://www.cnblogs.com/jiuchabaikaishui/p/4008754.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值