2011-10-04 25 views
2

對於Objective-C的初學者級別獨立研究,我被要求爲類添加計數器,以便每次使用方法時,它會++。但是,我誤解爲「每次調用該方法的方法++」。在意識到如何處理被問到的問題之後,我思考了如何設計一種方法,除了返回方法之外,還會返回一個計數器。如果我除了變量++之外還使用靜態int,每次調用該方法時,如何在主程序中提取該變量的值?從評論如何從多次調用方法中提取靜態int

示例代碼:

-(Fraction *) add: (Fraction *) f { 
    static int fractaddcount; 
    fractaddcount++; 
    Fraction *result = [[Fraction alloc] init]; 
    result.numerator = numerator * f.denominator + denominator * f.numerator; 
    result.denominator = denominator * f.denominator; 
    return result; 
} 
+0

請張貼代碼?這有點難以遵循。 –

+1

某些[SSCCE](http://sscce.org/)將很好地闡明這個問題:) – flob

+0

' - (Fraction *)add:(Fraction *)f { \t static int fractaddcount; \t fractaddcount ++; \t Fraction * result = [[Fraction alloc] init]; \t result.numerator = numerator * f.denominator + dominator * f.numerator; \t result.denominator =分母* f.deominator; \t返回結果; }'\ –

回答

1

fractaddcount使一個實例變量和在init方法將其初始化爲0。然後可以通過該類中的其他方法訪問它。

此外,如果你使它property其他類將能夠訪問它。您甚至可以在.h文件中只讀property,並在.m文件(類擴展名)中讀/寫。

實施例:
中.H:

@property (non atomic, readonly, assign) int fractaddcount; 

在的.m:
類擴展:

@synthesize fractaddcount; 
在初始化

@Interface TheClassName() 

@property (non atomic, readwrite, assign) int fractaddcount; 

@end 
在實施

:這是從什麼時候開始有點可選該類被實例化,ivars被清零(0)。

fractaddcount = 0; 

在你的代碼:

self.fractaddcount = self.fractaddcount + 1; 
+0

我沒有單獨的init方法...我錯過了什麼嗎? –

+0

如果你不需要初始化任何你不需要的東西。所有對象都保證在類實例化中爲零。通常不會有init方法。 – zaph

+0

然後在這種情況下,向我的add:方法添加計數器的方法是將@property行放入我的@interface部分,@合成到我的實現,然後拋出'self.fractaddcount = self.fractaddcount + 1;'添加:方法? –

相關問題