20150624_OC之@class关键字
来源:互联网 发布:从来绝色知难得打一字 编辑:程序博客网 时间:2024/06/01 22:24
@Class关键字的使用及与#import的区别:
//// ClassA.h// IOS150624_ObjectiveC_@class关键字//// Created by PengJunlong on 15/6/24.// Copyright (c) 2015年 Peng Junlong. All rights reserved.//#import <Foundation/Foundation.h>//#import "ClassB.h" //会有循环链的存在,导致编译无法展开,(ClassA与ClassB相互引用)@class ClassB;@interface ClassA : NSObject{ ClassB *_classB;}@property (copy,nonatomic)NSString *name;- (void)setClassB:(ClassB *)classb;- (void)printClassBInClassA;@end
//// ClassA.m// IOS150624_ObjectiveC_@class关键字//// Created by PengJunlong on 15/6/24.// Copyright (c) 2015年 Peng Junlong. All rights reserved.//#import "ClassA.h"#import "ClassB.h"@implementation ClassA- (void)setClassB:(ClassB *)classb{ _classB = classb;}- (void)printClassBInClassA{ NSLog(@"name = %@",_classB.name);}@end
//// ClassB.h// IOS150624_ObjectiveC_@class关键字//// Created by PengJunlong on 15/6/24.// Copyright (c) 2015年 Peng Junlong. All rights reserved.//#import <Foundation/Foundation.h>#import "ClassA.h" //会有循环链的存在,导致编译无法展开,(ClassA与ClassB相互引用),引用了当前类的类型以及类中的方法//@class ClassA; //只引用这个类的类型,不引用这个类的方法@interface ClassB : NSObject{ ClassA *_classA;}@property (copy,nonatomic)NSString *name;- (void)setClassA:(ClassA *)classa;- (void)printClassAInClassB;@end
//// ClassB.m// IOS150624_ObjectiveC_@class关键字//// Created by PengJunlong on 15/6/24.// Copyright (c) 2015年 Peng Junlong. All rights reserved.//#import "ClassB.h"@implementation ClassB- (void)setClassA:(ClassA *)classa{ _classA = classa;}- (void)printClassAInClassB{ NSLog(@"name = %@",_classA.name);}@end
//// main.m// IOS150624_ObjectiveC_@class关键字//// Created by PengJunlong on 15/6/24.// Copyright (c) 2015年 Peng Junlong. All rights reserved.//#import <Foundation/Foundation.h>#import "ClassA.h"#import "ClassB.h"//#import关键字,引用类的类型及类中定义的方法,若#import包含在头文件中可能会导致循环包含,需要用@class关键字来打断循环链//@class关键字,只引用类的类型,不引用类中的方法.但是如果想使用类中的方法,需要在对应的.m文件中用#import包含//@class只是告诉编译器存在这个类型,#import知道类内部信息全部int main(int argc, const char * argv[]) { @autoreleasepool { ClassA *classa = [[ClassA alloc] init]; classa.name = @"类A"; ClassB *classb = [[ClassB alloc] init]; classb.name = @"类B"; [classb setClassA:classa]; [classa setClassB:classb]; [classb printClassAInClassB]; [classa printClassBInClassA]; } return 0;}
0 0
- 20150624_OC之@class关键字
- 黑马程序员_OC关键字学习
- 20150617_OC之继承
- 20150624_OC之协议与自定义类型的归档
- 20150624_OC之代理及反向代理的简单例子
- iOS笔记之_OC-Foundation
- 20150619_OC之单例
- @class关键字
- 黑马程序员_OC语言之类方法和关键字self
- 黑马程序员_OC学习之点语法
- 黑马程序员_OC学习之block,protocol
- 黑马程序员_OC之核心语法
- 黑马程序员_OC之Foundation框架
- 黑马程序员学习笔记_OC之self
- 黑马程序员学习笔记_OC之继承
- 黑马程序员学习笔记_OC之NSString
- 黑马程序员_OC核心语法之分类
- 黑马程序猿_OC之Foundation简括
- IQ存储过程中执行有结果集返回的动态SQL的调用方法
- 关于网站重定向
- android ndk学习
- 中国剩余定理
- strcat 函数
- 20150624_OC之@class关键字
- 黑马程序员--JAVA基础知识--IO流
- MFC窗体去边框、置顶、全屏、激活
- 基因组与数据整合:DNA应用开发正在临近
- autotools使用(自动生成makefile)
- 第9课 u-boot 分析 初探
- androidstudio 快捷键大全
- android 数据库sqlite的使用方法
- LeetCode之Regular Expression Matching