初始化属性并从类的所有方法访问它

时间:2013-07-23 19:43:56

标签: ios objective-c

这可能是非常明显的事情,但我似乎无法理解如何让它发挥作用 - 我对OOP相当新,所以请温柔

我正在创建一个类,可用于调用一些将更新数据源的方法

理想情况下,我希望实例化该类并使用默认属性,然后调用将查找此属性并基于其值执行操作的方法,我还希望能够在实例化后更改此属性以便为了不同的目的重复使用相同的方法。

正在努力的部分是财产的设置

我正在设置我的价值

DataController.h

#import <Foundation/Foundation.h>


@interface DataController : NSObject
@property (strong, nonatomic) NSString *defaultValue;
-(void)radFunction;
-(NSArray)awesomeArray:(NSString *)urlString;
@end

实施

#import "DataController.h"
@implementation DataController
@synthesize defaultValue = _defaultValue;
+ (void)initialize {
//self.defaultValue causes error
NSString *defaultValue = @"somethingI want other methods to be able to access";
}

-(void)radFunction{
 NSLog(@" Default value %@", defaultValue);
}
@end

任何人都可以解决的任何问题都将非常感激:)

1 个答案:

答案 0 :(得分:3)

你应该选择一本优秀的iOS开发基础书并仔细阅读,这对于这样的材料来说非常有用。

。H
@interface DataController : NSObject

@property (strong, nonatomic) NSString * defaultValue;

- (id)initWithDefaultValue:(NSString *)defaultValue;
- (void)radFunction;
- (NSArray)awesomeArray:(NSString *)urlString;

@end

的.m

@implementation DataController

// No need to @synthesize anymore, this is now done for you by the compiler, 
// instance var of the @property will be accessible via _defaultValue

- (id)initWithDefaultValue:(NSString *)defaultValue
{
    self = [super init];
    if (self) {
         self.defaultValue = defaultValue;
    }
    return self;
}

- (void)radFunction
{
    NSLog(@" Default value %@", self.defaultValue);
}
@end

编辑:

请注意实例变量&amp;无法从类方法中访问@properties。类方法使用+声明,而实例方法使用-声明。您在+ (void)initialize;中看到错误,因为它是类方法,因此defaultValue不可用。