Who will call Main method in objective c

iphone

Solution

The easy way to find out is to stick a breakpoint in `main()` and take a look:

So technically, the answer to the question is that `main()` is called from something called `start`. You don't get the source code for `start`, but you can look at the assembly code in the debugger if you want. This version is from code built for the simulator:

0x1c30:  pushl  $0
0x1c32:  movl   %esp, %ebp
0x1c34:  andl   $-16, %esp
0x1c37:  subl   $16, %esp
0x1c3a:  movl   4(%ebp), %ebx
0x1c3d:  movl   %ebx, (%esp)
0x1c40:  leal   8(%ebp), %ecx
0x1c43:  movl   %ecx, 4(%esp)
0x1c47:  addl   $1, %ebx
0x1c4a:  shll   $2, %ebx
0x1c4d:  addl   %ecx, %ebx
0x1c4f:  movl   %ebx, 8(%esp)
0x1c53:  movl   (%ebx), %eax
0x1c55:  addl   $4, %ebx
0x1c58:  testl  %eax, %eax
0x1c5a:  jne    0x00001c53               ; start + 35
0x1c5c:  movl   %ebx, 12(%esp)
0x1c60:  calll  0x00001c70               ; main at main.m:9
0x1c65:  movl   %eax, (%esp)
0x1c68:  calll  0x00002376               ; exit
0x1c6d:  hlt    
0x1c6e:  nop    
0x1c6f:  nop   

If you create a MacOS X command-line program and put a breakpoint in `main()`, you'll find that `main()` is called by `start` on the desktop, too. The assembly for the Mac version of `start` isn't exactly the same, but it's very close. So it's a good guess that `start` is generated for you by the compiler based on the target platform, and that `start` is the entry point that the operating system looks for when it's launching a program.

Problem

I want to know who will call main method in objective-c? I know the UIApplicationMain(nil,nil,nil,NSStringFromClass[Appdelgate class]) method is calling from main() method and then process continues from appdelegate didFinishLaunchingWithOptions() method..... And i also know that main() method in java is called by JVM and process is going on from main() method. Like that, i want to know who will call main() in objective-c. thanks for help

Original source

Related problems