コードの設計についていくつか質問があります。これは長いかもしれません。可能な限り短くします。
Q1) 扶養か独立か?
クラスを作成し、必要な機能を追加して、オブジェクトが独自の状態を変更できるようにするか、コントローラー (ビューコントローラーとも呼ばれます) によって変更される状態を変更できるようにします。
コミュニケーションを図る場合は、コード例が最適です。 注: コードの行数を減らしました。http://www.techotopia.com/index.php/An_Overview_of_Objective-C_Object_Oriented_Programmingの元のコード。
とにかく、アカウントのアカウント残高を設定する必要がある場合は、これを行うことをお勧めします。
@interface BankAccount: NSObject
{
double accountBalance;
long accountNumber;
}
-(double) getAccountBalance;
-(void) setAccountBalance: (double) x;
@end
// Implementation Section Starts Here
@implementation BankAccount
-(void) setAccountBalance: (double) x
{
accountBalance = x;
}
-(double) getAccountBalance
{
return accountBalance;
}
@end
//usage
BankAccount *account1 = [BankAccount alloc] init];
[account1 setAccountBalance: 1500.53];
----しかし、私はこのようなコントローラーでそれを書いたと思います:------
@interface BankAccount: NSObject
{
double accountBalance;
long accountNumber;
}
import "BankAccount.h"
@interface MeViewController : UIViewController
-(void)setAccountBalance:(double)x toAccount:(BankAccount *)tempBankAcc;
@end
@implementation myViewController
-(void) setAccountBalance:(double)x toAccount:(BankAccount *)tempBankAcc
{
tempBankAcc.accountBalance = x;
}
//USAGE
BankAccount *account1 = [BankAccount alloc] init];
[self setAccountBalance(Account1,1500.53)]
@end
アカウントは単なるアカウントであるため、アカウント自体ではなく、AccountBalance を設定するのは私 (meViewController) だと思うからです。これは非常に悪い考えですか?私のアプローチでは、BankAccount はコントローラーを介して/コントローラーを使用してのみ変更できる (依存) ???
Q2) コントローラには何がありますか?
また、コントローラー内に記述されたコードは次の場合にのみ使用する必要があることもどこかで読みました。
ユーザー インタラクションへの応答とビューの更新
これは、コントローラーで次のことを決して行うべきではないことを意味します。
NSUserDefaults との間で読み取りまたは書き込みを行います。シングルトンなので、現在アクティブなコントローラーに関係なく、書き込みが簡単だと思いましたか? 悪いアイデア?applicationDidEnterBackground と applicationWillTerminate にデータ (NSUserDefaults を含む) を保存する必要があることを理解しています。そのため、他の場所 (別のコントローラーなど) に保存するのは悪い考えです。
Q3) 最も一般的に使用する設計パターンと、誤って悪用する設計パターンはどれですか?
シングルトン: 私の理解では、[UIApplication sharedApplication]、[NSNotification defaultCenter] およびその他のシングルトンはすべてのコントローラーを介してアクセスできますが、NSObject サブクラスはどうですか? またはUIViewサブクラス?
また、モデルが更新されたときに NSNotification を使用して他のコントローラーに通知できるようです。いつ使用するか、どのように使用するかの例を教えてもらえますか? おそらく、当初の意図とは異なる属性を持つデータをインポートすると、オブザーバーにアップグレードされたデータモデルが通知される可能性があります。これは、データモデル内でコントローラーに通知する場合の例ですか?
今のところ、質問はこれで十分です。
申し訳ありませんが、私はそれらをすべて頭から追い出さなければなりませんでした:-)
ベン