-2

これはおそらく非常に明白なことですが、これを機能させる方法について頭を悩ませているようには見えません-私は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

誰でもこれに当てることができる光は大歓迎です:)

4

1 に答える 1

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

編集:

インスタンス変数 &@propertiesは、クラス メソッド内からアクセスできないことに注意してください。クラス メソッドは で宣言され+ますが、インスタンス メソッドは で宣言されます-+ (void)initialize;これはクラス メソッドであるため、使用できないため、エラーが表示されdefaultValueます。

于 2013-07-23T19:48:30.297 に答える