我想知道在調用函數之前,如果客觀C做了任何檢查以查看指向對象的指針是否爲零。將零對象傳遞給一個函數
例如,說我有一個
myObject* ptr;
和初始化
ptr = nil;
,並呼籲
[self myFunction:ptr];
其中myFunction是我自己的函數並不做任何檢查,看是否對象是零。我聽說某個地方,目標C不會調用該函數,如果它是零?這是真的,我的代碼會安全嗎?
我問的原因是因爲我正在實施一個通用應用程序,並有一個UIView實例只能用於ipad。但是,我爲這個視圖做了很多的函數調用,而不是在調用函數之前進行條件檢查以查看它是否是ipad,如果我可以將視圖設置爲nil(如果它是iphone),那將是非常好的。另外,如果接口生成器分配了對象並將指針設置爲零,是否會出現內存泄漏或者生成器是否知道要釋放該對象?
感謝
是的,對原始海報要更加清楚:你的理解是倒退的。如果**對象**是'nil',則什麼都不會發生。如果**參數**爲零,則該方法仍然被調用,並且如預期的那樣處理零,或者爆炸。爭論沒有魔法。 – 2010-08-04 23:37:44
感謝您的回答,夥計們。是的,這回答了我的問題。對不起,我來自程序編程,並沒有太多的OOP經驗,所以我習慣於傳遞參數並忘記接收器的概念。是的,我的大部分代碼都在 [myObject myFunction]格式,所以我應該能夠將myObject設置爲nil。如果系統現在通過我的物體,我只是擔心。 – user396004 2010-08-05 00:16:57
如果你意識到除了明確通過的參數之外,self和_cmd都可以作爲隱式參數存在於每個方法中,這可能會有所幫助。當你的方法被調用時,'self'(接收者)只是一個隱含的參數。 – NSResponder 2010-08-05 02:47:47