Ios 目标C-避免导入循环
我想连接我的两个类,并用每个类的一个属性相互链接。我详细分析了这个例子的主要方面: Ocean.h文件:Ios 目标C-避免导入循环,ios,objective-c,import,Ios,Objective C,Import,我想连接我的两个类,并用每个类的一个属性相互链接。我详细分析了这个例子的主要方面: Ocean.h文件: #import <Foundation/Foundation.h> #import "Fish.h" @interface Ocean : NSObject @property (nonatomic) NSArray *listOfFishesInOcean; @end #import <Foundation/Foundation.h> @class Fish;
#import <Foundation/Foundation.h>
#import "Fish.h"
@interface Ocean : NSObject
@property (nonatomic) NSArray *listOfFishesInOcean;
@end
#import <Foundation/Foundation.h>
@class Fish;
@interface Ocean : NSObject
@property (nonatomic) NSArray *listOfFishesInOcean;
@end
#导入
#进口“Fish.h”
@接口:NSObject
@不动产(非原子)NSArray*中国海洋名录;
@结束
Fish.h文件:
#import <Foundation/Foundation.h>
#import "Ocean.h"
@interface Fish : NSObject
@property (nonatomic) Ocean *homeOcean; // Compiler: "Unknown type name Ocean"
@property (nonatomic) int age;
@end
#import <Foundation/Foundation.h>
@class Ocean;
@interface Fish : NSObject
@property (nonatomic) Ocean *homeOcean;
@property (nonatomic) int age;
@end
#导入
#导入“Ocean.h”
@接口Fish:NSObject
@不动产(非原子)海洋*homeOcean;//编译器:“未知类型名”
@属性(非原子)整数;
@结束
最后,我想做的是操作Fish对象的age属性,并能够保存它(ListOfficeSinocean,NSUserDefaults),以及在保存完成时调用Ocean对象中的函数。这样,我的海洋对象列表中总是有最新的鱼类对象列表
我的两个问题是:
如果有人对此有想法或其他想法,欢迎您 我认为最好的方法之一是使用标识符,这样可以提高性能
@interface Ocean : NSObject
@property (nonatomic) int identifier;
@property (nonatomic) NSArray *listOfFishesInOcean;
@end
@interface Fish : NSObject
@property (nonatomic) int age;
@property (nonatomic) int parent_identifier;
@end
如果您想保持您的方法:
#import <Foundation/Foundation.h>
@class Ocean;
@interface Fish : NSObject
@property (nonatomic) Ocean *homeOcean; // Compiler: "Unknown type name Ocean"
@property (nonatomic) int age;
@end
仅在“.m”文件中导入“.h”文件,如:
Ocean.h文件:
#import <Foundation/Foundation.h>
#import "Fish.h"
@interface Ocean : NSObject
@property (nonatomic) NSArray *listOfFishesInOcean;
@end
#import <Foundation/Foundation.h>
@class Fish;
@interface Ocean : NSObject
@property (nonatomic) NSArray *listOfFishesInOcean;
@end
Fish.h文件:
#import <Foundation/Foundation.h>
#import "Ocean.h"
@interface Fish : NSObject
@property (nonatomic) Ocean *homeOcean; // Compiler: "Unknown type name Ocean"
@property (nonatomic) int age;
@end
#import <Foundation/Foundation.h>
@class Ocean;
@interface Fish : NSObject
@property (nonatomic) Ocean *homeOcean;
@property (nonatomic) int age;
@end
我写了一个关于first的建议,并在结尾处回答了您的问题。创建一个头文件(Constants.h)并导入其中的所有文件,然后只需导入该文件,或者您可以导入
.pch
文件中的文件,默认情况下,该文件在所有类中都可以访问。非常感谢这两个解决方案,现在它可以工作了!另一个与IDs使用相关的主题是,当我保持我的方法并将海洋对象保存在NSUserDefaults(->encodeWithCoder)中,海洋将再次在Fish中调用encodeWithCoder时会发生什么。这将导致一个循环,因为我认为每个类中都有这两个属性,不是吗?我建议使用核心数据,因为用户默认值用于bool标志等小而快的数据。