1. Obviously it conforms the protocol by implementing two required methods, but why this works without writing '<'UITableViewDataSource,UITableViewDelegate'>' in the header?
The '<'UITableViewDataSource,UITableViewDelegate'>' in your header is just an indication to the compiler that you want to implement the delegate methods in your class. You will get warnings if you don't implement delegate methods that are marked as @required, but since most of the delegate methods are usually @optional your code will compile and run fine. That doesn't mean that you shouldn't add the delegates in your header though.
2. Which protocol it conforms, UITableViewDataSource or UITableViewDelegate?
Default it needs only UITableViewDataSource
with these two functions must be defined
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
3. Why there is no UITableView.delegate = self?
It is there, check your xib
you set delegate from the xib too. Right click the UITableView
you will understand what I mean, without setting delegate the above methods won't work.
Hope this helps.