20

私はObjective Cにかなり慣れていないので、いくつかの基本的な問題があります。

ナビゲーターを使って簡単なプログラムを書いたところ、すべてうまくいきました。次に、数行のコードを追加し(正確には何を思い出せず、問題とは関係がないようです)、問題が発生しました。ctrl+z を試しましたが、問題は残りました。

プログラムを実行すると、次のエラーが発生します。

1. unknown type name "mainController"
2. property with 'retain (or strong)' attribute must be of object type

一方、mainController はロードされる最初の画面です。

これは appDelegate.h ファイルです。

#import <UIKit/UIKit.h>
#import "mainController.h"
#import "WishesList.h"
#import "Wish.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) IBOutlet UINavigationController *navController;
@property (strong, nonatomic) IBOutlet mainController *viewController; // this line creates the errors
@property (strong, nonatomic) WishesList *WishesArray;
@property (strong, nonatomic) NSIndexPath *temp;

@end

これは appDelegate.m ファイルの関連部分です。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:    (NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
    WishesArray = [[WishesList alloc]init];
    temp = nil;
    [self setViewController:[[mainController alloc]init]];
    [self setNavController:[[UINavigationController alloc]initWithRootViewController:self.viewController]];
    [self.window setRootViewController:navController];
    [self.window makeKeyAndVisible];
    return YES;
}

これは mainController.h です。

#import <UIKit/UIKit.h>
#import "addWishController.h"
#import "displayWish.h"
#import "WishesList.h"
#import "Wish.h"

@interface mainController : UIViewController

@property (nonatomic, weak) WishesList *list;
@property (nonatomic, strong) IBOutlet UITableView *wishTable;

- (void)addWish;

@end

それはすでに機能しています...
あなたはそれを理解できますか?

ありがとう

4

6 に答える 6

35

インポートサイクルがある場合、同じエラーが表示されることがわかりました:

Class_A.h:#import "Class_B.h"

Class_B.h:#import "Class_A.h"

修正するには: 問題のあるクラスのインポートを探します (エラー タブはあなたの友達です。インポートのリストについては、関連するエラーを展開してください)。#importそれに応じて を削除します

于 2012-05-28T11:44:05.530 に答える
19

この問題は私に一度起こります。

hファイルに「APPDelegate.h」をインポートし、APPDelegate.hにもファイルをインポートしていました(問題はないはずですが...)

私がしたこと:インポートを自分の.hから.mに変更したところ、うまくいきました:)

于 2012-05-23T09:00:23.117 に答える
0

ターゲットとそれがコンパイルしているファイルを確認してください。おそらく、mainControllerはそのターゲットから何らかの方法で削除されています。もしそうなら、構築するときに、それが見つからないというメッセージが表示されます。

于 2012-01-10T23:58:54.360 に答える
-1

クラス名は通常大文字で始まるため、この問題はタイプミスのように見えます。したがって、mainController は MainController である可能性があります。クラス名をチェックして、エラーが本当にタイプミスかどうかを確認してください。コンパイラは、mainController というクラスが見つからないことを通知しているためです。

于 2012-01-10T10:00:37.880 に答える