Objective-C で遊んでいたときの楽しみのために、サンプルの短いデモ プログラムを作成しました。
コードの一部:
// TestClass.h:
@interface TestClass : NSObject {
int someNumber;
float someFloat;
}
@property int someNumber;
@property float someFloat;
// Returns String containing some instance values:
-(NSString *)getNiceString;
// Returns always the same string:
-(NSString *)getAnotherString;
-(id)init;
@end
--
//TestClass.m:
#import "TestClass.h"
@implementation TestClass
@synthesize someFloat;
@synthesize someNumber;
-(NSString*) getNiceString{
return [NSString stringWithFormat:
@"Float number: %f and the number is: %d", self.someFloat, self.someNumber];
}
-(NSString *) getAnotherString{
return [NSString stringWithString:@"TEST STRING"];
}
-(id)init{
self = [super init];
if(self){
self.someFloat = 100.34;
self.someNumber = 324;
return self;
}
return nil;
}
@end
そしていくつかの主なもの:
#import <Foundation/Foundation.h>
#import "TestClass.h"
int main (int argc, const char * argv[])
{
@autoreleasepool {
TestClass* instance = [TestClass alloc];
// Version 2:
// TestClass* instance = [[TestClass alloc]init];
NSLog(@"%@", [instance getNiceString]);
NSLog(@"%@", [instance getAnotherString]);
}
return 0;
}
メインで使用するTestClass* instance = [TestClass alloc];
と、出力は次のようになります。
2013-03-05 09:56:34.767 ObjectiveTest[8367:903] 浮動小数点数: 0.000000 およびその数: 0 2013-03-05 09:56:34.770 ObjectiveTest[8367:903] テスト文字列
代わりに 2 番目のバージョンを使用する場合 ( TestClass* instance = [[TestClass alloc]init];
):
2013-03-05 10:06:46.743 ObjectiveTest[8421:903] 浮動小数点数: 100.339996、その数: 324 2013-03-05 10:06:46.750 ObjectiveTest[8421:903] テスト文字列
問題は、初期化が行われるかどう[TestClass alloc]
かです(文字列が適切に返され、値がゼロになる)... -(id)init:
TestClass.m から実装を削除すると、それを含むバージョンinit
と含まないバージョンの出力がまったく同じになることに注意してください.. . デフォルトの初期化はありますか?