我试图让@property使用NSData,以便它可用于类中的所有方法。
我已经设置了一个小测试项目来帮助我调试问题。
我的main.m
是
FxPlug *data = [[FxPlug alloc] init];
[FxPlug makeCube];
NSLog (@"%@",[FxPlug.cubeData]);
并且在班级FxPlug.h
中
#import <Foundation/Foundation.h>
@interface FxPlug : NSObject
@property NSData *cubeData;
+(void) makeCube;
@end
和FxPlug.m
是
#import "FxPlug.h"
@implementation FxPlug
+ (void) makeCube; {
NSString *filePath = @"/Development/testNSDataProperty/test_cube_data.dat";
NSData *cubeData = [[NSData alloc] initWithContentsOfFile:filePath];
}
@end
所以这只是一个测试,看看我是否可以将类@property NSData *cubeData;
中的FxPlug
设置为文件的内容,并查看它是否被传递回main.m
类到NSLog
到终点站。
我真的很感激一些帮助。
基本上,我试图在类之间传递NSData对象。
非常感谢!
因为我的主项目是一个FxPlug,它基本上只是一个大类,有大量专门为主机app命名的方法。所以我需要为现有的类添加一个新的类方法来处理NSData对象。或者至少我认为它是如何工作的!
答案 0 :(得分:0)
如果要使用属性,则必须使用并创建类实例并避免使用类方法,因此:
FxPlug.h:
#import <Foundation/Foundation.h>
@interface FxPlug : NSObject
@property NSData *cubeData;
-(void) makeCube;
@end
FxPlug.m:
#import "FxPlug.h"
@implementation FxPlug
- (void) makeCube {
NSString *filePath = @"/Development/testNSDataProperty/test_cube_data.dat";
self.cubeData = [[NSData alloc] initWithContentsOfFile:filePath];
}
@end
的main.m:
FxPlug *data = [[FxPlug alloc] init];
[data makeCube];
NSLog (@"%@", data.cubeData);
可以使用类方法和类级变量来完成,但不能使用@property
。一个中途的房子是使用单例模式,你只允许任何一个类的一个实例存在。
编辑:如果您想将其作为静态类(不推荐),则代码如下:
FxPlug.h:
#import <Foundation/Foundation.h>
@interface FxPlug : NSObject
+ (NSData *)cubeData;
+ (void)setCubeData:(NSData *)cubeData;
+ (void) makeCube;
@end
FxPlug.m:
#import "FxPlug.h"
static NSData *_cubeData = nil;
@implementation FxPlug
+ (NSData *)cubeData
{
return _cubeData;
}
+ (void)setCubeData:(NSData *)cubeData
{
_cubeData = cubeData;
}
+ (void) makeCube {
NSString *filePath = @"/Development/testNSDataProperty/test_cube_data.dat";
_cubeData = [[NSData alloc] initWithContentsOfFile:filePath];
}
@end
的main.m:
[FxPlug makeCube];
NSLog (@"%@", [FxPlug cubeData]);