2017-09-26 113 views
0

這個問題也在問什麼類型的東西我最好作爲參數傳遞給類方法而不是作爲類的屬性傳遞? 例如,如果我們有一個方法func其中的類的name工作,然後我得到了兩個選項:當預期設置ObjectiveC類屬性時?

@property (nonatomic) NSString *name; 
- (void)func; 

OR

- (void)funcWithName:(NSString*)name; 

兩個看起來像由ObjC有效的設計給我。 但是,我不清楚在調用func之前,班級的用戶是否需要知道他需要設置name屬性?如果這不是該屬性的適當用法,那麼對於非只讀屬性,它是適當的用法是什麼用例?

回答

1

你在比較蘋果和橘子。你所建議的兩種架構與其他架構無關。

  • 如果類需要name財產出於某種原因,它應該有一個name財產。

  • 如果方法需要傳遞給它的新字符串,它應該有一個字符串參數。

+0

您確定嗎?我在這裏談論一個兩點都是正確的情況,這個類需要一個名字,而且這個方法使用相同的名字。 – sramij

+1

當然我很確定。我告訴你的是,你正在混淆兩個正交的東西。如果該方法真正在現有名稱_property_上運行,那麼將它作爲名稱參數是愚蠢的,因爲這可能是_different_名稱。如果該方法的工作是設置名稱屬性_然後_對其進行操作,那麼將它賦予新的價值當然是有意義的。 – matt

+0

然後我們回到我的第一點。該方法真正對現有名稱屬性進行操作,我同意將另一個字符串作爲名稱參數是愚蠢的。然後,在這種情況下(這是我的問題),誰保證在調用此方法之前將設置name屬性?否則,它將沒有任何操作。 – sramij