OC语言day04-17获取类对象以及类对象应用的场景

pragma mark 获取类对象以及类对象应用的场景

pragma mark 概念

/**
 通过类对象 创建实例对象
 */

pragma mark 代码

#import <Foundation/Foundation.h>
#pragma mark 类
#import "Person.h"
#import "Car.h"
#pragma mark main函数
// 函数的声明
void demo(Class c);
int main(int argc, const char * argv[])
{
    
    // 1. 如何获取类对象
    Person *p1 = [[Person alloc]init];
    Person *p2 = [[Person alloc]init];
    
#warning 获取类对象 方法1 [实例对象 class]
    // 一个类 在内存中只有一份类对象
    /*
     typedef struct objc_class *Class;
     */
    Class c1 = [p1 class];
    Class c2 = [p2 class];
#warning 获取类对象 方法2 [类名 class]
    Class c3 = [Person class];
    NSLog(@"c1 = %p, c2 =%p , c3 = %p",c1,c2,c3);
    
#warning 类对象的应用场景 (创建实例对象、调用类方法)
    // 2.1 用于创建 实例对象
    Person *p3= [[c1 alloc]init];
    p3.age = 22;
    NSLog(@"age %i",p3.age);
    // 2.2 用于调用类方法
    [c1 test];
    
#warning 使用函数 通过类对象 创建实例对象
    demo(c1);
    
    demo([Car class]);
    
    return 0;
}

void demo(Class c)
{
    id obj = [[c alloc]init];
    NSLog(@"%@",obj);
}


Person.h //人类
#import <Foundation/Foundation.h>

@interface Person : NSObject

@property int age;

+(void)test;
@end
Person.m
#import "Person.h"

@implementation Person

+(void)test
{
    NSLog(@"test");
}
@end

Car.h //车类
#import <Foundation/Foundation.h>

@interface Car : NSObject

@end
Car.m
#import "Car.h"

@implementation Car

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天看到一篇不错的文章关于OC内存管理的,转载一下与你共享概述我们知道在程序运行过程中要创建大量的对象,和其他高级...
    niceSYT阅读 513评论 0 2
  • 学习目标 1.【理解】对象在内存中的存储 2.【理解】nil和NULL 3.【了解】#pragma mark分组导...
    Hm丶阅读 541评论 0 3
  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 9,263评论 3 38
  • 大纲 0.OC数据类型 1.声明一个类 2.实现一个类 3.创建一个对象 4.对象的注意点 5.对象方法 6.类方...
    天天想念阅读 1,189评论 0 3
  • Objective-C 1. import的用法 拷贝文件内容可以自动防止文件的内容被重复拷贝(#define宏定...
    马文涛阅读 5,458评论 3 17

友情链接更多精彩内容