I want to store some data in plist file. If I change data in plist file, do I have to recompile my application?
I'm not quite sure I understand your question. Here are some things to think about:
If you haven't yet stored the data in the plist file, and your app needs to read it in, then your app needs to know how to read (and maybe write) the plist file, and the format of the data within it. For that, you'd need to recompile your app.
If you have an app already, and you want to go inside the "package" and modify a plist file in there, then you will be breaking the app since the app is digitally signed and will not run if the signature is invalid. To make a valid signature, you need to rebuild your app using Xcode or some other signing utility (i don't know of any). This might not mean that your app has to recompile, but it does have to "rebuild".
If you plan on modifying this plist file after the app is built, whether programmatically by your app or otherwise, then your app needs to be getting this plist file from someplace outside of your app bundle, to get around the signature issue. There, it can be modified or read without invalidating your app.
If you want a way to distribute this plist file with the app, then put it in your resource folder in Xcode. In your app, check if you can find that file in your Preferences or Documents folder, and if not, then go ahead and copy the file from your app bundle into the Prefs or Documents folder. From then on, then use that copy.