0

この場合何が問題なのか理解できないので、デリゲートを使用できません - には例外がありますself.plistManager.delegate = self; Property 'delegate' not found on object of type 'DataPlistManager *'

#import "DataManager.h"
#import "DataPlistManager.h"

@interface DataAdapter : NSObject <DataStorageManager>

@property (nonatomic,strong) DataPlistManager *plistManager;
- (void) saveFile;

@end

とその実装

#import "DataAdapter.h"

@implementation DataAdapter

-(id) initWithDataPlistManager:(DataPlistManager *) manager
{
    self = [super init];
    self.plistManager = manager;
    self.plistManager.delegate = self;
    return self;
}

- (void) saveFile
{
    [self.plistManager savePlist];
}

@end
4

3 に答える 3

0

DataManager クラスにはデリゲート プロパティが含まれているため、オブジェクトを DataManager クラスのデリゲートとして設定し、デリゲート クラス内でメソッド (メッセージを送信) saveFile を呼び出す必要があります。

@implementation DataAdapter

- (void)someMethod) {
    DataManager *dataManagerObject = [[DataManager alloc] init];
    dataManagerObject.delegate = self;
}

@implementation DataManager

- (void)someDelegateMethod {
    [self.delegate saveFile];
}

委任パターンの概念を理解していますか?

https://developer.apple.com/library/ios/documentation/general/conceptual/CocoaEncyclopedia/DelegatesandDataSources/DelegatesandDataSources.html

于 2013-09-06T06:27:45.027 に答える
0

ファイルに追加#import "DataAdapter.h""DataPlistManager.h"てから削除してファイルに追加すると、"DataPlistManager.m"わかりませんが、数日前に同じ問題があり、このトリックを使用して解決しました:)

于 2013-09-06T05:58:18.290 に答える
0

DataPlistManager にはプロパティ デリゲートが必要です。

@property (weak) id<DataStorageManager> delegate;
于 2013-09-06T05:50:25.897 に答える