I appreciate the vote but maybe some clarification is in order.And I am trusting John's knowledge of IOC that this is not the best way to go in this application. Post 14.
I don't like IOC for this kind of thing because many other PICs don't have the level of control over IOC that this one does. Many of the others caution against polling the other bits of the IOC port etc. Since I don't like solving the same problem twice, I just don't use IOC as a source of multiple, unrelated interrupts like debouncing.
As far as the debouncing logic itself, I use the timer approach to schedule it and prefer independent switch debounce logic. But there are lots of good ways to do it and @ErnieM and @MMcLaren offer some good ones. I'd support any that:
3) are maintainable
4) are portable
..roughly in that order.