oc-10-对象做参数

简介:
复制代码
//
//  main.m
//  6-【掌握】对象和方法之间的关系

#import <Foundation/Foundation.h>

//声明人类
@interface Person : NSObject
{
    @public
    NSString *_name;//名字
    int _age ; //年龄
    int _sex; //性别 1表示男 2表示女  3表示未知
}

//方法
-(void)eat;
//声明了一个看孩子的方法  方法的参数 kid 类型是人类 Person *
-(void)takeCareOfKid:(Person *)kid;
//声明了一个 生孩的方法 方法的返回值类型  Person *
-(Person *)giveBirthTokid;
@end

//人类实现
@implementation Person
//方法
-(void)eat{
    NSString * str = @"sadasd";
    NSLog(@"吃吃吃");
}
//实现了一个看孩子的方法  方法的参数 kid 类型是人类 Person *
-(void)takeCareOfKid:(Person *)kid{
    NSLog(@" %@ 在看 名字为 %@的 %d岁的小孩时  打....",_name,kid->_name,kid->_age);
}

//实现了一个 生孩的方法 方法的返回值类型  Person *
-(Person *)giveBirthTokid{
    Person *p = [Person new];
    p->_name =@"凤姐的孩子 不是猴子 ";
    p->_age = 18;
    NSLog(@"凤姐 p = %p",p);
    return p;
}
@end



int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        //NSLog(@"Hello, World!");
        
        Person *zhangsan = [Person new];
        zhangsan->_name = @"班长";
        zhangsan->_age = 20;
        
        
        Person *kidddddd = [Person new];
        kidddddd->_name = @"猴子 我是猴子 我不是凤姐的孩子 ";
        kidddddd->_age = 3;
        
        [zhangsan takeCareOfKid:kidddddd];
        NSLog(@"猴子地址  %p",kidddddd);
        
        
        Person *ssss = [zhangsan giveBirthTokid];
        
        
        NSLog(@"name = %@,生的孩子地址 sssss = %p ",ssss->_name,ssss);
        
        
        
    }
    return 0;
}
复制代码

 


本文转自农夫山泉别墅博客园博客,原文链接:http://www.cnblogs.com/yaowen/p/5306792.html,如需转载请自行联系原作者

相关文章
|
iOS开发 C++
几个示例带你去了解OC对象是怎么分配内存的
1、64位系统环境的OC对象最小分配内存为16字节。 2、结构体内存对齐,是指在计算结构体大小的时候,其分配的原则:结构体大小必须是最大成员变量分配内存的倍数。 3、iOS操作系统在分配内存的时候,也有内存对齐的概念,为16的倍数 :在iOS的堆空间中,如果要创建一个OC对象,分配内存时,都是16的倍数。
176 0
|
iOS开发 C++
[iOS]深入理解__bridge - OC对象与C++对象的引用转换
### 0x0 crash 昨天在iOS Geekers钉钉群里聊到一个问题, 下面的代码会crash: ``` void* a = new char; id ext = (__bridge id)a; ``` crash现场如图: ![screenshot](http://img4.tbcdn.cn/L1/461/1/4e9d2cc9803f4577de30ac
9229 0