Test code for class methods

BankAccount.h

#import 

@interface BankAccount : NSObject

@property (readonly) double balance;

+(BankAccount *) accountWithBalance:(double)amt;
-(void) deposit:(double)amt;
+(void) setInterestRate:(double) rate;
-(void) applyInterest;

@end

BankAccount.m

#import "BankAccount.h"

@interface BankAccount()
@property (readwrite) double balance;
@end

@implementation BankAccount

+(BankAccount *) accountWithBalance:(double)amt
{
    BankAccount *temp = [BankAccount alloc];
    temp.balance = amt;
    return temp;
}

-(void) deposit:(double)amt
{
    self.balance += amt;
}

double interestRate = 0.05;

-(void) applyInterest
{
    double amt = self.balance*interestRate;
    self.balance += amt;
}

+(void) setInterestRate:(double) rate
{
    interestRate = rate;
}

@end

Code using the BankAccount class

    BankAccount *acct1 = [BankAccount alloc];
    BankAccount *acct2 = [BankAccount alloc];
    [acct1 deposit:1000];
    [acct2 deposit:2000];
    [acct1 applyInterest];
    [acct2 applyInterest];
    [BankAccount setInterestRate:0.08];
    NSLog(@"%6.2f %6.2f", acct1.balance, acct2.balance);
    [acct1 applyInterest];
    [acct2 applyInterest];
    NSLog(@"%6.2f %6.2f", acct1.balance, acct2.balance);
    BankAccount *acct3 = [BankAccount accountWithBalance:100];
    NSLog(@"acct3: %6.2f", acct3.balance);