1. ホーム
  2. objective-c

[解決済み] カスタムメイドのフレームワークで「セレクタ 'Hello:'の既知のクラスメソッドがありません」というエラーが発生する。

2022-02-19 14:24:49

質問

ある会社のフレームワークを作っているのですが、すべてのコードが完成しました。今、それをフレームワークにパッケージ化しようとしています。 テストとして、私はこの名前のメソッドを作りました。 -(void)Hello:(NSString *)worldText;

フレームワークを使ったアプリケーションで、このコードを使って呼び出そうとすると [CompanyMobile Hello:@"World"]; というコンパイラーエラーが発生します。

セレクタ 'Hello:' に対応する既知のクラスメソッドがありません。

私のフレームワークの.mは以下の通りです。

#import "Hello.h"

@implementation Hello

- (id)init
{
    self = [super init];
    if (self) {
        // Initialization code here.
    }

    return self;
}

-(void)Hello:(NSString *)world {

}

@end

私のフレームワークの.hは以下の通りです。

#import <Foundation/Foundation.h>

@interface Hello : NSObject
-(void)Hello:(NSString *)world;
@end

私のアプリケーションの.h

//
//  FMWK_TESTViewController.h
//  FMWK TEST
//
//  Created by Sam on 6/15/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <companyMobile/Hello.h>
@interface FMWK_TESTViewController : UIViewController

@end

私のアプリケーションの.m

//
//  FMWK_TESTViewController.m
//  FMWK TEST
//
//  Created by Sam Baumgarten on 6/15/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import "FMWK_TESTViewController.h"

@implementation FMWK_TESTViewController

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

- (void)viewDidLoad
{
    [Badgeville Hello:@"Sam"];
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
}

- (void)viewDidDisappear:(BOOL)animated
{
    [super viewDidDisappear:animated];
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return YES;
}

@end

解決方法は?

定義した Hello: をインスタンスメソッドとして送信しています。 Hello: をクラスに追加します。クラスメソッドを定義するには、次のように書きます。 + (void)Hello: ではなく - (void)Hello: .