A method is always called in the context of some object. That is, it always has access to self which represents that object on which it was called. This is a standard precept of object-oriented (OO) programming.
A function has no implicit self parameter. All of its parameters are explicit.
Beyond this core distinction, there’s a lot of syntactic good that separates methods and functions in Objective-C. However, the core distinction described above is true for pretty much any OO language.