0

私はiOSアプリに取り組んでおり、その最初のリリースは先週App Storeに公開されました。それに追加するものと、ユーザーのフィードバックに基づいて変更したいものについていくつかのアイデアがありました。私はすべての主要な新しいセクションに対して機能ブランチを実行することにしました。最初の機能ブランチを完了し、警告やエラーなしでアプリが正しく動作することを確認しました。

Xcodeで正常にマージされたマスターを開いて実行しようとすると、競合なしでブランチをマスターにマージしました。「セレクターの既知のクラスメソッドがありません」、「クラスのインターフェイス定義が重複しています」、「プロパティ」がたくさん表示されます。以前の宣言」エラーがあります。私はそれが言及しているすべてのファイルを調べました、そしてそれらはすべて機能ブランチにあったのとまったく同じです。ファイルを引き起こす最大の問題は、Appleからの到達可能性です。

これは、「セレクターの既知のクラスメソッドがありません」をスローするファイルの1つの例です。create、、、updateおよびremoveメソッドに対してそれを実行しています。これらのメソッドはすべて、機能ブランチに追加されました。

.hファイル:

//
//  Services.h
//  MovieQueue
//
//  Created by Joshua Kendall on 2/22/13.
//  Copyright (c) 2013 Simple App Group LLC. All rights reserved.
//

@interface Services : NSObject

+ (NSArray *)search:(NSString *)movieTitle;
+ (NSDictionary *)getMovieDetails:(NSInteger)movieId;

+ (void)create:(NSDictionary *)record;
+ (void)update:(NSDictionary *)record;
+ (void)remove:(id)movieId;

@end

そして、編集された.mファイル:

//
//  Services.m
//  MovieQueue
//
//  Created by Joshua Kendall on 2/22/13.
//  Copyright (c) 2013 Simple App Group LLC. All rights reserved.
//

#import "Services.h"

@implementation Services

#pragma mark - API Access

+ (NSArray *)search:(NSString *)movieTitle {
...
}

+ (NSDictionary *)getMovieDetails:(NSInteger)movieId {
...
}

#pragma mark - CRUD

+ (void)create:(NSDictionary *)record {
...
}

+ (void)update:(NSDictionary *)record {
...
}

+ (void)remove:(id)movieId {
...
}

@end
4

1 に答える 1

0

わかりました。これはインポートの問題でした。Servicesクラスなどの一般的なファイルはすべて、アプリケーションの.PCHファイルにインポートされていました。すべてのViewControllerに同じファイルをインポートするよりも理にかなっているため、これまでに作成したすべてのアプリでこれを実行しました。

CodaFiの提案を受けてインポートを確認しました。問題なくビルドされたクラスの1つにサービスヘッダーをインポートした後、原因と思われるために.PCHファイルを調べ始めました。

.PCHファイルは、それを使用する各クラスでファイルをインポートするための代替ではないことがわかりました。それらはまだ各クラスにインポートする必要があります。このページ「プリコンパイル済みヘッダーがコードを無効にする4つの方法」では、「不足している#importsを見つけて修正する」というタイトルのセクションで問題を具体的に説明しました。

iOSプロジェクトでブランチを使用したことがないので、これまでに問題が発生したことはないと思います。

于 2013-03-10T05:39:15.010 に答える