我是新來的objective-c和ios,但我很順利。現在我遇到了一種情況,我可以看到到達同一目的地的兩種方式。我只是好奇哪種方式更適合程序的效率。如果有更好的措辭表達我還不知道的所有這些,我很抱歉。存儲對象數組或在需要時創建?
(去除所有先前的上下文)..事情的肉是這樣的:
我的第一個目的是,可具有施加旋轉變換爲矩形的UIView對象。該對象具有存儲四個轉換角的位置的CGPoint的屬性。
rectangularView.h
<...>
@property (nonatomic) CGPoint topLeft;
@property (nonatomic) CGPoint topRight;
@property (nonatomic) CGPoint bottomLeft;
@property (nonatomic) CGPoint bottomRight;
我已經創建了一個線對象:
line.h
<...>
@property (nonatomic) CGPoint pointA;
@property (nonatomic) CGPoint pointB;
@property (nonatomic) float m; // slope
@property (nonatomic) float b; // y-intercept
基本上,線對象表示rectangularView的側面。這些行將被存儲在一個數組中。
在其他地方有一種方法能夠確定兩個線對象是否相交以確定一個矩形視圖是否與另一個相交。
- (BOOL)checkLineIntersection:lineA:lineB
問題: 當checkLineIntersection:LINEA:lineB被稱爲它需要明顯發兩級的對象。它會更好:
- (A)要創建並存儲在每個矩形視圖對象中的行對象?
- 優點:該生產線的將已被創建並且只需要被傳遞給該方法,產生更快的處理
- 缺點:更多存儲器將利用
- (B)創建的線之前的對象將它們發送到該方法。
- 優點:爲所有人創造的rectangularView對象兩側的所有的循環期間將它們發送到方法
基本上,如果有一個比較rectangularView(compView)
[OPTION A]
for (RectangularView *rv in rectangularViewArray) {
BOOL doesIntersect = [self checkLineIntersection:[rv lineA] lineB:[compView lineA]];
<...>
或
[OPTION B]
for (RectangularView *rv in rectangularViewArray) {
Line *lineA = [[Line alloc].....
Line *lineB = [[Line alloc]....
<...>
BOOL doesIntersect = [self checkLineIntersection:[rv lineA] lineB:[compView lineA]];
我傾向於選擇A以分裂事件之間的處理時間,這意味着該行獲得設計和創建rectangularView計算時,他們只需要在它們的交點發送到被召回測試。
謝謝你,我希望我寫得很好。
好點。我想現在和任何人一樣,開始瞭解這些工具。我會投這個票,但我的代表還不夠高。但是,謝謝。 – pedwards
學習工具確實是一項值得投資的投資。有來自蘋果WWDC的優秀視頻iniTunes可以引導你。此外,如果您覺得合適,您應該能夠選擇我的答案作爲答案,而不是放棄。 – rooftop