makeObjectsPerformSelector
這是數組用的方法,類似於for循環。
makeObjectsPerformSelector:@selector(method:)
意為數組中的每個元素都執行method方法
makeObjectsPerformSelector:@selector(method:) withObject:obj
表示數組中的每個元素都執行method方法,並把obj對象作為參數傳到method方法中。
使用該方法時需要注意,withObject的參數需要為對象,而不是基本數據類型等。如想將一個btn數組的按鈕都設為selected,可以用
[self.selectedBtnArr makeObjectsPerformSelector:@selector(setSelected:) withObject:@(YES)];
這是有效的。但若想設置為NO的話,則無效。
[self.selectedBtnArr makeObjectsPerformSelector:@selector(setSelected:) withObject:@(NO)];
這是因為YES和NO都為BOOL類型,設置為YES時,傳遞的為非0的指針,所以會設置 btn.selected = YES
但若設置為NO時,傳遞的仍為非0的指針,所以執行的結果仍是 btn.selected = YES。
此時可以用
[self.selectedBtnArr makeObjectsPerformSelector:@selector(setSelected:) withObject:nil];
來達到 btn.selected = NO 的效果。但不推薦該法,應使用for循環處理。
