我剛剛作出了一個樣本簡短的演示程序的樂趣,當我與Objective-C的比賽:ObjectiveC分配和init?
一些代碼片段:
// 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年3月5日09:56:34.767 ObjectiveTest [8367:903]浮點數:0.000000 和數量爲:0 2013年3月5日09:56:34.770 ObjectiveTest [8367:903] 測試字符串
當第二版本來代替(TestClass* instance = [[TestClass alloc]init];
):
2013年3月5日10:06:46.743 ObjectiveTest [8421:903]浮點數: 100.339996並且編號爲:324 2013-03-05 10:06:4 6.750 ObjectiveTest [8421:903]測試字符串
的問題是,如果使得[TestClass alloc]
任何初始化的東西(字符串正常返回的和值是零)......值得一提的是,如果我刪除-(id)init:
從TestClass.m的實現init
版本的輸出,沒有它是完全一樣的......有沒有任何默認的初始化?
謝謝你的回答; ) – 2013-03-05 09:31:09