The below are general guidelines only, and the advice herein may not apply perfectly to your situation. Consult a tax accountant or research these items yourself to be sure this aligns with your needs. No guarantee is being made about the accuracy of this advice.
First let's quickly define a TFSA vs RRSP:
TFSA:
RRSP:
Money goes in from your pre-tax earnings [meaning you get a tax deduction for contributions, so if you make 70k and contribute 20k, you have taxable income of 50k that year]
Once you take money out, you can never put it back (unless it is to buy a new home when you have never owned your home before, or for specific medical expenses - in either case, you need to repay it over ~10 years back to your plan)
You are not immediately taxed on earnings inside the account.
When you take money out, it is 100% taxable, as if it was 'regular income' [in Canada, this means taxed at the same rate as interest, or employment income, rather than preferential treatment given to dividends and capital gains].
Annual limit: ~18% of your cumulative employment income earned in Canada, capped at $26k / year [ie: if you made 10k 2 years ago, and 100k last year, and you contributed $1k to your RRSP last year you would be able to contribute $1.8k + $26k - $1k = $26.8k this year].
When is one better than the other? It depends. In short, if you are young, and have financial goals that will occur before retirement (such as buying a home or car, paying for education, etc.), then a TFSA is much more flexible. You can easily take money when you need it [ie: to buy a car], without harming your ability to have a large tax deferred investment account up to retirement. If you are solidly in your career and your next financial goal in 20 years is retirement, then the RRSP is typically recommended more, with the general idea that you get a tax deduction when you are in the top income tax bracket, and get taxed on income when you are retired and in a lower income tax bracket.
However, I have 2 specific caveats to watch for:
If you are planning on buying a home for the first time: Strongly consider the RRSP. You can effectively take a tax deduction today, and (assuming you meet the requirements) use that tax deduction to get a larger tax refund. You can then take the refund + withdraw your original contribution, and use it for a downpayment for a house in some cases [this is called the First Time Home Buyer Plan, which you can research online]. You then need to repay the RRSP amount withdrawn over 10 years, and you won't actually be taxed on it until you take it out down the road [typically during retirement]. This allows you to increase the down payment you are able to make on your first house by often ~30%!
If you believe tax rates will increase in the future: The RRSP is not such a great deal. Let's say in 30 years when you retire, tax rates are 70%. That means you'll take a deduction of ~30% today, only to be taxed 70% in the future! Plus, you lose tax advantages on capital gains and dividends [since both are deemed to be 'regular income' when withdrawn from an RRSP]. There may still be benefit in the immediate tax deduction + tax deferral causing better compounding on your investments, but the result is no longer clearcut, particularly if you are close to retirement.
Finally, asset allocation between accounts
So, at this point, let's assume that you've determined the amount of money you want invested with your TFSA, and the amount you want within your RRSP (and, the amount you want invested within regular taxable accounts). If you picked only one or the other - great, put whatever investments you would normally do, inside that account. Otherwise, there is a little bit of tax efficiency you can gain by being careful about what goes where. Let's tackle this by asset class:
Interest bearing investments: These have no special tax treatment. $1 of interest income = $1 of taxable income. Because the RRSP can lose the benefits granted to Capital Gains / Dividends (see below), interest-bearing investments can be well-suited to an RRSP account. Same applies to any other form of 'regular' investment income.
Dividend bearing investments: These investments are most-tax efficient in Canada when earned by someone at less-than the top-marginal tax rate [the 'why' is a little convoluted and out of scope - just assume it to be true and research more]. So, if you are already at a low-marginal tax rate [ie: your income is currently low], there is a benefit to having dividend bearing investments inside a regular tax-bearing account.
Capital gains-bearing investments [ie: high-growth, low-dividend stock]: These investments have a low tax rate (50% of your regular). You might therefore want them in your regular taxable account, however any growth in investment value also grows the value of your TFSA, if your TFSA holds them. So there is some benefit to having high-growth investments within your TFSA, thereby growing your total TFSA room for the future.
Investments with associated deductions [ie: assume for simplicity you take out a loan of $100k to invest in the stock market]: You will only get those deductions, if the related income is taxable. So, be sure to put those investments in a taxable account [yet, some banks continue to offer idiotic 'RRSP loans', which is a terrible idea that wastes the tax deduction from related interest expense!].
Without getting more complex than that, you can see the tendency for what you might want to go where. The question is: does your desired amount of bonds = your desired amount to go in your RRSP? If yes, perfect fit [assuming you agree with the general parameters above, for which you should review yourself as I make no guarantees for accuracy]. Likewise for other asset classes. Of course, this likely isn't the case, so you do need to make some sacrifices for simplicity.
Just keep in mind that the tax differences between types of tax accounts I've listed above, likely outweighs the tax differences for what goes in those accounts, for most people. So first figure out your allocation between TFSA/RRSP/RESP/Taxable accounts, and then do a little work to try and optimize.