2012-12-09 52 views
2

在Objective-C中,如果我有一個只包含類方法的類(沒有成員變量或實例方法),我可以在類的頭文件(.h)中定義類方法,並跳過創建.m文件?頭文件中的類方法實現

+1

不是「最佳實踐」,但爲什麼不嘗試呢? – 2012-12-09 10:58:04

+1

你可以,但你最好不要。 Objective-C不是C++(幸運的是)。 – 2012-12-09 11:05:20

+0

那麼,他們這樣做的副作用呢?它是否破壞了Xcode的方法識別,它是ARC友好的,它是一種黑客嗎?蘋果有沒有說過這件事? –

回答

3

可以,但你基本上不應該。雖然你可以把你的@implementation放在一個頭文件中,但它是反常規的,它可能會產生意想不到的副作用,就像在C++或其他語言中一樣(例如,你無法控制你的頭文件#include之前#包括,所以你不能確定你有一個健全的全局命名空間)。

Objective-C中的最佳實踐是隻保留頭文件中的聲明以及文檔。由於文檔通常非常冗長(如果編寫的很好),那麼在您的頭文件中已經有相當一部分內容 - 在其上添加代碼將會太多。

請記住,Objective-C方法沒有內聯,無論是類還是實例。這是在C/C++中將代碼放在頭文件中的一個比較流行的做法。你當然可以在你的Objective-C頭文件中加入靜態函數,這樣你就可以用這種方式實現你的代碼,但這可能是一個不合需要的設計 - 例如,類方法提供了一種名稱空間的形式, 。